NGINX 代理端口

NGINX 代理端口

我使用 nginx 作为反向代理,并代理我们的一些网络服务器、应用程序系统等。现在我有一个应用程序,可以通过端口 2222 上的 https 访问。因此,我像对其他系统一样创建了一个重定向。

我的问题是,我无法访问该端口上的应用程序。连接被拒绝。我的防火墙将允许此连接,我们已检查过。Nginx 也正在监听该端口。

Nginx 配置为:

server {
  listen 2222;

  server_name server.hostname.de;

  ssl_certificate           /etc/nginx/cert.cer;
  ssl_certificate_key       /etc/nginx/key.key;

  ssl on;
  ssl_session_cache  builtin:1000  shared:SSL:10m;
  ssl_protocols  TLSv1.2;
  ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
  ssl_prefer_server_ciphers on;

  location / {
      proxy_pass https://server.hostname.de:2222/;
  }
}

知道这里可能出了什么问题吗?

提前致谢

答案1

那么,在 Nginx 尝试侦听端口 2222 的同一台机器上,端口 2222 上还有另一个服务?我认为此配置应该拒绝加载,在这种情况下,它会在日志中抱怨。它无法侦听已经侦听的相同地址和端口。或者,您可以观察到它将请求循环代理到自身:它既在侦听端口 2222,又将请求定向到端口 2222(我不知道它会是什么样子,但不要指望有什么好处。)

请同时显示ss -lnpt | grep 2222以确认正在监听该端口的内容以及哪些 IP 地址。您可以屏蔽民众IP,但最好不要对私人IP做任何事情。

您的服务可能只在本地主机上监听(127.0.0.1和/或::1),在这种情况下您还需要将 Nginx 指向本地主机:

      proxy_pass https://127.0.0.1:2222/;

更好的是,为了安全起见,避免循环回到同一主机上的同一端口。对后端服务(可能是 2222)和前端代理使用不同的端口(最好让 443 监听 HTTPS,80 监听 HTTP)。此外,使用而不是listen 443 ssl单独ssl on(这是过时的方式配置 SSL)。

答案2

这应该是一个评论,但空间有限,格式也是如此......

所以我创建了一个重定向

不,你没有。重定向是完全不同的东西。你配置了一个代理。

连接被拒绝。我的防火墙将允许此连接,我们已检查过。Nginx 也正在监听该端口。

但你不打算告诉我们你是怎么做到的吗?也不打算告诉我们这是在什么操作系统上运行的?

你提出了一系列相互矛盾的断言,但没有提供任何证据来支持它们。

除非你对分割 DNS 做了一些非常奇怪的事情,否则你似乎将 nginx 指向回其自身。

答案3

当然,这是我的配置。

server {
  listen 2222;

  server_name server.hostname.de;

  ssl_certificate           /etc/nginx/cert.cer;
  ssl_certificate_key       /etc/nginx/key.key;

  ssl on;
  ssl_session_cache  builtin:1000  shared:SSL:10m;
  ssl_protocols  TLSv1.2;
  ssl_ciphers HIGH:!aNULL:!eNULL:!EXPORT:!CAMELLIA:!DES:!MD5:!PSK:!RC4;
  ssl_prefer_server_ciphers on;

  location / {
      proxy_pass https://server.hostname.de:2222/;
  }
}

相关内容