我有一个IP地址,比如说192.168.1.20,它有一个运行两个HTTP站点作为子域的NGINX服务器,说:
如果我在浏览器中访问site1.domain.com或site2.domain.com,我将被导向到正确的网站。 如果我去192.168.1.20,我被引导到site1。
我想NGINX使用头来select适当的位置,当通过浏览器访问 – 但我希望能够通过IP地址到达site2.domain.com。 我是否需要以某种方式为请求添加特定的头文件来执行此操作,或者有其他方法吗?
当托pipe多个网站时,networking服务器将使用Host:标题来确定正在请求哪个网站。 如果该标题丢失,则Web服务器将显示默认网站。
在浏览器的地址栏中指定域名时,浏览器会为您添加Host:标题。 这告诉服务器正在请求哪个网站。
但是,当您在地址栏中指定IP地址时,您还没有告诉浏览器放入Host:标头的URL。
如果您必须使用IP地址访问您的服务器,请手动添加Host:标题。
将一个默认的服务器命令添加到server2块。
server { listen 80 default_server; server_name example.com; # etc }
如果没有标题怎么办?
telnet 192.168.1.20 80 Trying 192.168.1.20... Connected to 192.168.1.20. Escape character is '^]'. get / <!DOCTYPE html> ... </html> Connection closed by foreign host.
然后你得到configuration的default网站。 如果你想要另一个网站,你可以发送标题或按照选项#1 。
只需将所需的IP地址添加到受尊重网站的server_namevariables即可:
server_name 192.168.1.20 site2.domain.com;
或者,您可以创build另一个vhost并使用redirect:
server { listen 192.168.1.20:80; server_name _; return 301 http://site2.domain.com$request_uri; }
这应该允许所需的域也被IP打开..