我只是将nginx设置为直接代理tomcat应用服务器的网络服务器。 当用户连接到我的网站时,Nginx应该将请求重定向到运行tomcat app服务器的端口8080。
我在运行Redhat 7的amazon 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:权限被拒绝)
这绝对是一个用户访问问题,但似乎无法弄明白。看起来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而不是localhost,但没有运气。 我也尝试将nginx.conf中的用户更改为myuser,但仍然没有运气。 当我直接连接到应用程序服务器时,我没有任何问题。
Example URL of my tomcat http://mydomain:8080/example/
提前谢谢你。
答案 0 :(得分:65)
经过2天的搜索,我找到了解决方案。不知怎的,SELinux不允许Nginx代理我的服务器。运行以下命令修复了问题。
/usr/sbin/setsebool httpd_can_network_connect true
答案 1 :(得分:0)
您可以继续查看此问题: stackoverflow questions 23443398
基本上这是套接字权限的问题:
设置unix套接字的权限(如果使用)。在Linux中,读/写 必须设置权限才能允许来自Web服务器的连接...