nginx proxy_pass 到 tomcat webapp

nginx proxy_pass 到 tomcat webapp

我想将 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 标头。

相关内容