【问题标题】:nginx proxy server localhost permission deniednginx 代理服务器 localhost 权限被拒绝
【发布时间】:2014-10-03 19:40:18
【问题描述】:

我只是将 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:权限被拒绝)同时连接到上游,客户端

这绝对是用户访问问题,但似乎无法解决。好像 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/

提前谢谢你。

【问题讨论】:

  • 您在启动 nginx 服务器时收到错误消息?或请求网址?
  • 我在请求 url 并且 Nginx 重定向到 50x.html 页面时收到错误消息。 Nginx 启动正常。

标签: tomcat nginx amazon-ec2 proxy webserver


【解决方案1】:

经过 2 天的搜索,我找到了解决方案。不知何故,SELinux 不允许 Nginx 代理到我的服务器。运行下面的命令解决了这个问题。

 /usr/sbin/setsebool -P httpd_can_network_connect true 

感谢@DaveTrux 添加 -P 标志

【讨论】:

  • 如果您将 -P 标志添加到该命令,它会使设置在重新启动后保持不变。
  • 我在谷歌上找到了这个答案,并且可以验证它是否也适用于 CentOS 7.2.1511 上的 nginx。感谢您回答您自己的问题 user1653068 以及来自@DaveTrux 的关于 -P 标志的注释。
  • 您好,我想问一下,这个问题是怎么发生的?因为当我重新启动服务器时,会发生这种情况吗?我正在努力避免下次发生这种情况。谢谢。
  • 发生了同样的问题,解决方案在 Fedora 上的 nginx 上运行。谢谢!
  • 很高兴我找到了这个解决方案。谢谢。
【解决方案2】:

您可以移动查看此问题: stackoverflow questions 23443398

基本上是socket的权限问题:

设置 unix 套接字的权限,如果使用的话。在 Linux 中,读/写 必须设置权限才能允许来自 Web 服务器的连接...

【讨论】:

  • 我已经检查过该链接,但它并没有解决我的问题。问题是我的问题不在于 PHP。我的问题是设置反向代理服务器。
猜你喜欢
  • 2012-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-25
  • 2021-03-27
  • 2017-11-03
  • 1970-01-01
  • 2018-01-11
相关资源
最近更新 更多