我在 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:8080
为http://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;
}