我想将 nginx 配置为 tomcat 上托管的不同 web 应用程序的反向代理。
基本上,所有对http://localhost:80/A/some/other/params
(nginx 在端口 80 上运行)的请求都应转发到http://localhost:8080/webappA/some/other/params
(tomcat 在端口 8080 上运行,为 webappA 提供服务)。
我尝试过这个:
...
server {
listen 80;
server_name localhost;
root /usr/share/nginx/html;
location /A/ {
proxy_pass http://localhost:8080/webappA/;
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;
}
...
没有运气,因为它将请求转发到http://localhost:8080/A//some/other/params/
我不知道proxy_pass 文档如何让每个本地 Web 应用程序拥有 1 个位置。我不想以 root 身份部署 Web 应用程序 A,因为我的 Tomcat 实例中会有多个 Web 应用程序。谢谢
编辑:
我怀疑 tomcat 配置也存在问题,但找不到问题所在,因为 proxyName 和 proxyPort 与 nginx 的匹配:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
proxyName="localhost"
proxyPort="80"
redirectPort="8443" />
完整的 nginx 配置位于这个要点。
编辑2:通过对最低限度的配置进行进一步调查,我了解到这种代理是有效的。
我的问题与添加 CORS 标头有关,而位置块内使用 ifs 的所述方法对我来说不起作用(nginx 1.6.2)。我将从 tomcat 过滤器添加 cors 标头。