Nginx隐藏转发的端口号

时间:2013-03-16 23:04:00

标签: proxy nginx port portforwarding

我正在尝试建立一个简单的静态网站,我遇到的问题是nginx因许多问题而变得复杂,最明显的是我的ISP会阻止所有入站端口80的流量。

首先,我设置了一个Web前端,以便www.mysite.com重定向到mysite.com:8000,然后设置我的路由器将端口8000转发到运行nginx的服务器。这绕过了我的ISP在端口80上的阻塞。我现在试图让服务器上的nginx将端口8000上的请求代理到端口80上的虚拟主机上,这样该网站在加载后会显示为mysite.com比mysite.com:8000。

我一直在尝试使用nginx的proxy_pass指令,但无论我做什么,该网站总是显示为mysite.com:8000。

这是我到目前为止所拥有的:

server {
  listen [::]:8000

  server_name mysite.com;

  location / {
    proxy_pass http://127.0.0.1:80;
    proxy_redirect default;
    proxy_set_header  Host               $http_host;
    proxy_set_header  X-Real-IP          $remote_addr;
    proxy_set_header  X-Forwarded-For    $proxy_add_x_forwarded_for;
    proxy_set_header  X-Forwarded-Proto  http;
  }
 }

server {
  listen 127.0.0.1:80;

  server_name mysite.com;

  root /var/www/homepage;
  index index.html;

  .
  .  (non-relevant stuff)
  .
}

链接到实际网站:http://www.bjacobel.com

我还尝试通过将路由器上的端口8000转发到端口80,并让nginx侦听端口80,但是仍然显示带有:8000的网址。

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

问题的根源不是您的设置,而是第一个网络转发 - 它通过将请求的网址(http://www.yoursite.com)重定向到新网址(http://yoursite.com:8000

因此,当请求到达您的设置时,这已经到位,并且您无法将其更改回端口80,因为您的提供程序会阻止它。

您可以使用框架集作为转发器(“Web 0.5”)或使用它。

答案 1 :(得分:2)

警告,在住宅连接上托管公共网络服务器通常违反ISP的服务条款。

浏览器将始终显示8080,因为需要在端口8080上启动HTTP连接才能访问您的站点。如果您可以“隐藏”部分URL,请考虑安全问题。

唯一的解决方法是在可以在端口80上访问的服务器上托管代理服务器或带框架的网站。此外,还有可以将端口80重定向到8080的重定向服务。