我正在尝试安装独立的存档服务器,但遇到了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