AWS + SELinux,使用 SSL 从 nginx 上游连接到码头服务器时权限被拒绝



我正在尝试安装独立的存档服务器,但遇到了nginx ssl代理的问题。我可以点击代理,但是它后面的码头服务器出现 502 错误网关错误。Nginx返回以下内容:

connect() to 127.0.0.1:8080 failed (13: Permission denied) while connecting to upstream.
  client: xxx.xx.xx.xxx, 
  server: server.at.aws, 
  request: "GET /archiva HTTP/1.1", 
  upstream: "http://127.0.0.1:8080/archiva", 
  host: "server.at.aws"

这是在 AWS 实例上。码头服务器正在侦听端口 127.0.0.1:8080。我已经确认我可以从实例本身内部访问存档服务器。Jetty 服务器是否需要任何特殊配置才能使其接受代理连接?

我忘记了这个配置的一个非常重要的细节。它位于运行selinux的Fedora服务器上。端口 8080 在 nginx 中脱离上下文并被拒绝。

type=AVC msg=audit(1380053745.510:1730): avc:  denied  { name_connect } for  
   pid=12145 comm="nginx" dest=8080 scontext=system_u:system_r:**httpd_t**:s0
   tcontext=system_u:object_r:**http_cache_port_t**:s0 tclass=tcp_socket
http_cache_port_t              tcp      8080, 8118, 8123, 10001-10010
http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000

我将码头服务器重置为侦听 8008,但至少没有收到这些权限被拒绝错误。服务器仍然无法正常工作,但原因不在此问题的上下文中。

nginx无法访问默认端口以外的其他端口。该访问权限在默认 SELinux 策略中定义,因此默认端口有效。

在您的情况下,这是创建新策略并使用 audit2allow 工具安装它的最简单方法,该工具可以从审核日志创建策略模块。

看https://access.redhat.com/site/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Security-Enhanced_Linux/sect-Security-Enhanced_Linux-Fixing_Problems-Allowing_Access_audit2allow.html

最新更新