Nginx 反向代理 Tomcat 返回403错误
在配置Nginx反向代理Tomcat并实现后,有时通过代理的域名访问时,浏览器会返回403页面,这是由于进行配置时,niginx 没有读取其定义的静态文件的权限;
比如示例的 nginx.conf 部分配置如下:
upstream testapp {
server 127.0.0.1:8080;
}
server {
listen 80;
server_name www.assad.site;
root /tomcat/webapps/testapp;
index index.html index.htm index.jsp
location ~ \.(jsp|jspx|do|wsdl)$ {
proxy_pass http://testapp;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location ~ \.(html|htm|js|htm|png|gif|jpg|jpeg)$ {
root /tomcat/webapps/testapp;
}
}
该示例中 root 属性,location ~ \.(html|htm|js|htm|png|gif|jpg|jpeg) { ... } 部分定义 Nginx 所要处理的静态页面的服务器路径,在示例中为 /tomcat/webapps/testapp
在nginx.conf 开头部分,有一句配置如下:
use www www
表明 nginx 强制使用 www 用户组的www用户;
此时我们可以检查 /tomcat/webapps/testapp 权限;
cd /tomcat/webapps
ll
返回中说明testapp的信息部分:
drwxr-x--- 5 root root 4096 Jul 31 20:40 testapp
说明 /tomcat/webapps/testapp 目录下的文件归宿 root root 用户;
此时我们更改 /tomcat/webapps/testapp 的用户归属:
chown -R www www webapps
之后再通过域名访问,就会返回正常页面;