我只是将 nginx 设置为直接代理到 tomcat 应用程序服务器的网络服务器。 当用户连接到我的网站时,Nginx 应该将请求重定向到运行 tomcat 应用程序服务器的端口 8080。
我正在运行 Redhat 7 的亚马逊 ec2 实例上做所有事情。
到目前为止,我所拥有的是:
nginx.conf file
user nginx;
worker_processes 1;
server {
listen 80;
server_name mydomainname;
access_log /var/log/nginx/example.log;
error_log /var/log/nginx/example.error.log;
location / {
proxy_pass http://localhost:8080/example/;
}
}
我得到的错误是 (13: Permission denied) while connecting to upstream, client
这绝对是一个用户访问问题,但似乎无法弄清楚。看起来 nginx 没有权限重定向到端口 8080。
此外,nginx 在 myuser 下运行
root 15736 nginx: master process /usr/sbin/nginx
myuser 15996 nginx: worker process
root 16017 grep --color=auto nginx
我试过用 127.0.0.1 代替本地主机,但没有成功。 我也尝试将 nginx.conf 中的用户更改为 myuser,但仍然没有成功。 当我直接连接到应用程序服务器时,我没有任何问题。
Example URL of my tomcat http://mydomain:8080/example/
提前致谢。
最佳答案
经过 2 天的搜索,我找到了解决方案。不知何故 SELinux 不允许 Nginx 代理到我的服务器。运行下面的命令解决了这个问题。
/usr/sbin/setsebool -P httpd_can_network_connect true
感谢@DaveTrux 添加 -P 标志
关于tomcat - nginx 代理服务器 localhost 权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25235453/