我们有什么:
带有 nginx 的反向代理服务器 - 外部:10.xx.xx.xx - 内部:192.xx.xx.1
在端口 9010 上运行服务的内部服务器:192.xx.xx.15
如果我们通过以下方式连接到代理,我们已经获得了服务https://10.xx.xx.xx/
但目标是:
如果我们通过以下方式连接,则可以在内部服务器上获取服务https://10.xx.xx.xx/内部服务器。但如果我们在配置中将位置从 / 设置为 /internalserver 或 /inernalserver/,我们只能获得默认的 nginx 索引页 ->https://10.xx.xx.xx/index.html
同样重要的是:我们希望得到利用https://10.xx.xx.xx/内部服务器但它应该只代理http://192.xx.xx.15:9010/不http://192.xx.xx.15:9010/内部服务器。
为什么不起作用?我们已经尝试了一些重写命令,但没有效果。
server {
listen 80;
return 301 https://$host$request_uri;
}
server {
listen 443;
server_name 10.xx.xx.xx;
ssl_certificate /etc/nginx/certificate.crt;
ssl_certificate_key /etc/nginx/certificate.key;
ssl on;
ssl_session_cache builtin:1000 shared:SSL:10m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
ssl_prefer_server_ciphers on;
location /test/ {
# rewrite ^/test(/.*)$ $1 break;
proxy_pass http://192.xx.xx.15:9010/;
}
}
答案1
使用重写可以实现此效果:
location /internalserver {
rewrite /internalserver/(.*) /$1 break;
proxy_pass http://192.xx.xx.15:9010;
proxy_redirect off;
proxy_set_header Host $host;
}
不过,您根本不需要重写,只需在 proxy_pass 中指定确切的 url 即可:
location /internalserver {
proxy_pass http://192.xx.xx.15:9010/;
}
在两种情况下,的使用和位置/
都很重要。