无法通过Nginx反向代理在Tomcat上进行远程部署

时间:2017-09-25 07:30:20

标签: java tomcat nginx deployment

在我的测试服务器(Fedora 26)上安装了一个tomcat环境。一切都是库存包。我还在前面安装并设置了Nginx反向代理。已设置tomcat-users.xml,我可以按预期登录应用管理器。

现在,当我尝试为其部署WAR时,我的Nginx日志出现严重故障:

2017/09/25 15:12:21 [crit] 13878#0: *36 open() "/var/lib/nginx/tmp/client_body/000000XXXX" failed (13: Permission denied), client: 200.x.x.x, server: some-sandbox.com, request: "POST /manager/html/upload?org.apache.catalina.filters.CSRF_NONCE=XXXXXXXxxxx HTTP/1.1", host: "some-sandbox.com", referrer: "https://some-sandbox.com/manager/html/upload?org.apache.catalina.filters.CSRF_NONCE=XXXXXXXxxxx

然后Nginx将500内部服务器返回浏览器。

我有什么问题?有任何建议如何解决?

感谢。

2 个答案:

答案 0 :(得分:0)

显然,临时上传文件夹/var/lib/nginx/tmp存在一些权限问题。我确保整个路径都归正确的系统用户所有。但问题仍然存在。

因此,为了避免这个问题,我决定将Nginx配置为跳过缓存客户端主体。出于我的目的,在代理之前缓存没有实际价值。

Nginx 1.7.11引入了一个新的proxy_request_buffering指令。如果将其设置为off,则将禁用缓冲。因此任何权限问题都不会影响上传。

所以我的服务器部分有这个:

location / {
    proxy_request_buffering off;
    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/;
}

答案 1 :(得分:-1)

您可以检查当前用户的文件的用户权限。