使用Apache,我可以使用此VirtualHost配置进行反向代理 . 我已经执行 nanoc view -p 8080
使用8080端口用于nanoc web应用程序 .
通过此设置, http://scalatra.prosseek
将映射到nanoc .
<VirtualHost *:80>
ProxyPreserveHost On
ServerName scalatra.prosseek
ProxyPass /excluded !
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
</VirtualHost>
我需要与Nginx进行相同的设置,有一些试验和错误,我可以使用这个配置 .
upstream aha { # ??? (1)
server 127.0.0.1:8080;
keepalive 8;
}
# the nginx server instance
server {
listen 0.0.0.0:80;
server_name scalatra.prosseek;
access_log /usr/local/etc/nginx/logs/error_prosseek.log;
location / {
# ??? (2)
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://aha/; # ??? (1)
proxy_redirect off; # ??? (3)
}
}
它有效,但我不确定这是否是最好的设置 . 这是我的问题:
-
http://scalatra.prosseek
到localhost:8080的设置是否正常: -
这些是正确的proxy_set_headers设置吗?还是我错过了什么?
-
对于proxy_pass和上游,只要两个名称相同就可以了吗?
-
我需要
proxy_redirect off;
吗?
1 回答
您的配置看起来很近 .
代理 Headers 应该没问题 . 通常Nginx会传递头文件,因此当您想要修改它们时会使用proxy_set_header - 例如,即使客户端没有提供Host头,也会强制存在Host头 .
对于proxy_pass和upstream,是的,名称需要匹配 .
考虑离开proxy_redirect(默认) . 此选项修改Nginx是否干扰301和302重定向(包括端口号)等响应 . 关闭它意味着您的upsteam应用程序必须负责在任何重定向响应中传递正确的公共域名和端口 . 将其设置为默认值意味着如果您不小心尝试将客户端指向端口8080,Nginx在某些情况下会将其更正为端口80 .
您还没有在nginx配置中包含/ excluded路径 . 添加它