我正在尝试建立一个简单的静态网站,我遇到的问题是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的网址。
感谢您的帮助!
答案 0 :(得分:3)
问题的根源不是您的设置,而是第一个网络转发 - 它通过将请求的网址(http://www.yoursite.com)重定向到新网址(http://yoursite.com:8000)
因此,当请求到达您的设置时,这已经到位,并且您无法将其更改回端口80,因为您的提供程序会阻止它。
您可以使用框架集作为转发器(“Web 0.5”)或使用它。
答案 1 :(得分:2)
警告,在住宅连接上托管公共网络服务器通常违反ISP的服务条款。
浏览器将始终显示8080,因为需要在端口8080上启动HTTP连接才能访问您的站点。如果您可以“隐藏”部分URL,请考虑安全问题。
唯一的解决方法是在可以在端口80上访问的服务器上托管代理服务器或带框架的网站。此外,还有可以将端口80重定向到8080的重定向服务。