Nginx 和 Tomcat 反向代理不起作用

Nginx 和 Tomcat 反向代理不起作用

我在 Cent OS 上配置 Nginx 和 Tomcat 服务器时遇到了麻烦。

这是nginx.conf

server {
    listen       80;
    server_name  subdomain.test.com;
    root         /usr/local/tomcat/webapps/webapp_folder;
    index        index.html index.htm index.jsp;

    proxy_set_header   Host             $host;
    proxy_set_header   X-Real-IP        $remote_addr;
    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;

    location ~ \.jsp {
       proxy_pass      http://127.0.0.1:8080;
    }
}

当我访问子域名.test.com,我将得到一个下载对话框而不是index.jsp的内容。

此外,我可以通过访问ip_address:8080/webapp_folder

我也尝试将 URL 更改http://127.0.0.1:8080http://127.0.0.1:8080/webapp_folder,但是当我启动 Nginx 时,出现以下错误消息:

重新启动 nginx 守护进程:nginxnginx:[emerg]“proxy_pass”不能在正则表达式给出的位置、命名位置内、“if”语句内或 /etc/nginx/nginx.conf:145 中的“limit_except”块内有 URI 部分

我也尝试过这个:

server {
    listen       80;
    server_name  subdomain.test.com;
    root         /usr/local/tomcat/webapps/webapp_folder;
    index        index.html index.htm index.jsp;

    proxy_set_header   Host             $host;
    proxy_set_header   X-Real-IP        $remote_addr;
    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;

    location / {
       proxy_pass      http://127.0.0.1:8080/webapp_folder;
    }
}

但仍然不起作用。

你能帮我解决这个问题吗?非常感谢!

答案1

可能会出现下载对话框,因为 jsp 未在 /etc/nginx/mime.types 中定义 - 尽管我认为反向代理不会更改 Tomcat 提供的 mime 类型。

我假设当您在端口 8080 访问应用程序时,WebApp 可以正常工作?如果是这样,看看当您将所有请求传递给 Tomcat 时会发生什么,如下所示:

server {
    listen       80;
    server_name  subdomain.test.com;
    root         /usr/local/tomcat/webapps/webapp_folder;
    index        index.html index.htm index.jsp;

    proxy_set_header   Host             $host;
    proxy_set_header   X-Real-IP        $remote_addr;
    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    proxy_pass         http://localhost:8080;

}

相关内容