如何将nginx请求代理到tomcat路径?

如何将nginx请求代理到tomcat路径?

我有一个域名 example.com。当输入时,example.com我想将请求代理到127.0.0.1:8080/source

我的 nginx 配置

location / {
    proxy_set_header   X-Real-IP $remote_addr;
    proxy_set_header   Host      $http_host;
    proxy_pass         http://127.0.0.1:8080;
 }

这适用于 127.0.0.1:8080,但我无法让它代理到 /source 子目录。当我更改为

proxy_pass http://127.0.0.1:8080/source/;

它不能正常工作。

它重定向到 http://127.0.0.1:8080/源/不错,但是js和css文件路径是/source/js/ *.js/source/css/ *.css ,其他资源文件是/source/*。例如,当浏览器加载html时,它会尝试查找/source/js/ *.js,由于我重定向到http://127.0.0.1:8080/source/,最终路径是http://127.0.0.1:8080/source/source/js/ *.js,但正确的路径是http://127.0.0.1:8080/source/js/ *.js

我只是想要当我进入示例.com,它将重定向到http://127.0.0.1:8080/源/,或者重定向到 example.com/source 也可以。

答案1

问题结尾表明,您需要做的就是重写单个 URI。这可以通过多种方式实现,但精确匹配locationrewrite...last如下所示:

location = / {
    rewrite ^ /source/ last;
}
location / {
    proxy_set_header   X-Real-IP $remote_addr;
    proxy_set_header   Host      $http_host;
    proxy_pass         http://127.0.0.1:8080;
}

了解详情。

答案2

server {
 listen      80;
 server_name hello.example.me;
    access_log /var/log/nginx/tomcat-access.log;
    error_log /var/log/nginx/tomcat-error.log;

  location = / {
    rewrite ^ /HELLO/ last;
}
  location / {
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://127.0.0.1:8080/;
  }
}

效果很好。请随意添加更多路径。

相关内容