【问题标题】:Nginx redirect to domain name instead of IP addressNginx 重定向到域名而不是 IP 地址
【发布时间】:2018-01-05 09:53:33
【问题描述】:

我有一个来自 godaddy 的域名,将其视为 www.example.com,以及来自 linode(Ubuntu 16.04 LTS)的服务器。我有一个静态网页,通过 nginx 通过监听端口 9000 提供服务,将其视为 0.0.0.0:9000。

server {
    root /home/webapps/mysite;
    index index.html index.htm;

    listen 0.0.0.0:9000;
    server_name example.com www.example.com;

    location / {
        try_files $uri $uri/ /index.html;
    }
}

我在linode DNS管理器中添加了域名,并且在godaddy域转发设置中也添加了。

如果我在浏览器中使用 0.0.0.0:9000,我的网站页面将正确打开,如果我在浏览器中使用域名 example.com,则域名将更改为 IP 地址和我的页面打开,为什么会这样,为什么我的域名变回 IP 地址,我错过了什么吗?

【问题讨论】:

    标签: redirect nginx dns


    【解决方案1】:

    假设应用程序已经在 localhost:9000 运行,您可以像这样设置反向代理。

    server {
        listen 80;
        server_name example.com www.example.com;
    
        location / {
            proxy_pass http://0.0.0.0:9000;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
        }
    }
    

    更多信息请参考https://www.digitalocean.com/community/tutorials/how-to-set-up-a-node-js-application-for-production-on-ubuntu-16-04

    【讨论】:

      【解决方案2】:

      域注册商的“域转发” 功能表明您已将您的域名redirect (301 Moved Permanently) 配置为另一个站点 —您显然必须将其配置为重定向到 http://192.0.2.50/,因此,这就是您的浏览器中显示的内容。


      配置域的正确方法(这将避免您遇到的上述问题)是改为更改 DNS 设置

      • 添加一个名为@(意思是example.com.)的记录,类型为A,值为192.0.2.50
      • 添加一个名为www(意思是www.example.com.)的记录,类型为CNAME,值为@

      您可以在您的注册商界面中进行上述设置,或者将域名委派给您的托管服务提供商,然后维护这些设置在那里。

      显然,为了不必指定端口号,您必须更改 nginx 配置以在端口 80 上运行它才能使域正常工作。


      或者,如果上述内容过于复杂,另一种避免 IP 地址出现在浏览器中的快速方法是使用 “域掩码” 转发类型。

      【讨论】:

        猜你喜欢
        • 2021-03-25
        • 2013-11-02
        • 2014-05-20
        • 1970-01-01
        • 2019-12-22
        • 2020-08-16
        • 1970-01-01
        • 2021-11-23
        • 2019-10-08
        相关资源
        最近更新 更多