【问题标题】:how to redirect no-www to www under jwilder/nginx-proxy?如何在 jwilder/nginx-proxy 下将 no-www 重定向到 www?
【发布时间】:2016-06-28 16:32:18
【问题描述】:

我使用 nginx docker(https://github.com/jwilder/nginx-proxy),但发现无法修改此处提到的 .htaccess (Nginx no-www to www and www to no-www)。谁能告诉我如何在上面的 jwilder/nginx-proxy 下将 no-www 重定向到 www。

【问题讨论】:

    标签: nginx docker


    【解决方案1】:

    不要忘记更新变量 VIRTUAL_HOST 以同时拥有 www 和非 WW 主机名:

    VIRTUAL_HOST=www.target-host.com, target-host.com

    【讨论】:

      【解决方案2】:

      这可能有点晚了,但我发现这里的解决方案太花哨了,所以我为jwilder/nginx-proxy 创建了adamkdean/redirect 轻量级配套服务。

      下面的示例仅显示了 HTTP,但如果您喜欢使用 JrCs 的 letsencrypt-nginx-proxy 配套服务,您可以将其连接到 HTTPS。

      对于adamkdean/redirect,您只需提供两个环境变量,一个重定向位置和一个状态代码(可以是 301、302、303 或 307),默认值为 307(如果您省略 REDIRECT_STATUS_CODE )。

      version: '2'
      
      services:
        nginx-proxy:
          image: jwilder/nginx-proxy
          ports:
            - 80:80
          volumes:
            - /var/run/docker.sock:/tmp/docker.sock:ro
      
        redirect:
          image: adamkdean/redirect
          environment:
            - VIRTUAL_HOST=example.com
            - REDIRECT_LOCATION="http://www.example.com"
            - REDIRECT_STATUS_CODE=301
      
        example:
          image: example
          environment:
            - VIRTUAL_HOST=www.example.com
      

      在这里找到回购:https://github.com/adamkdean/redirect

      【讨论】:

      • 赞成:我不知道“faffing”(我自己 2016 年的回答可能会促使某人这样做)。
      • @VonC 哈哈。无意冒犯,只是有时您需要一个开箱即用的解决方案,该解决方案可重复且可靠,且定制化程度最低至零。
      • 这似乎是一个不错的解决方案,并且可以反向工作,即 www 到非 www,但它可以处理多个站点吗?例如,我可以将两个托管站点 - www.domain1.com 重定向到 domain1.com 并将 www.domain2 重定向到 domain2 吗?如果是这样,它可能是一种在一个地方处理不同站点重定向的巧妙方法,而不是通过每个站点的 DNS。
      • @mharran 就目前而言,不,但这是我计划添加的内容,因为我发现自己使用许多实例进行单个重定向。
      • 太好了,@AdamKDean,它真的很有用。
      【解决方案3】:

      您可以在不更改 nginx.tmpl 的情况下添加重定向。可以选择直接在server { 下或默认位置location / { 中导入更多配置文件。见https://github.com/jwilder/nginx-proxy#per-virtual_host

      创建并挂载文件/etc/nginx/vhost.d/your-website.com/etc/nginx/vhost.d/your-website.com_location,内容如下:

      rewrite ^/(.*)$ http://www.your-website.com/$1 permanent;
      

      【讨论】:

        【解决方案4】:

        简介

        很遗憾,您没有指定您的技术设置。 所以我必须做一些假设。 假设您想使用完全受支持的 docker 环境和以下 docker 镜像来创建博客:

        • nginx 代理,
        • 码头工人,
        • 让我们加密,
        • ghost(博客软件)和
        • 玛丽亚数据库。

        因此,您注册了一个名为 personalblog.com 的域。 您已经为将托管您的博客内容的 IP 地址设置了 DNS A 记录。所以你有一个 personalblog.com 到那个 IP 地址的 A 记录和一个 www.personalblog.com 到那个 IP 地址的 A 记录。

        要求

        请按照说明使用letsencrypt环境设置您的nginx-proxy(您将在这些存储库中找到完整的设置说明):

        完成 docker 的 nginx-proxy 设置后,请按照以下说明使用 ghost 和 maria db 设置您的博客软件:

        在为 ghost 拉取最新镜像时可能存在 docker 错误。因此将 docker-compose.yml ghost:latest 更改为 ghost:1.22.1

        jwilder/nginx-proxy 将非 www 重定向到 www

        在 nginx-proxy 设置(由上面的 @evertramos 存储库描述)中,您在 .env 文件中指定了您的 Nginx 文件路径(查看 NGINX_FILES_PATH=/path/to/your/nginx/data)。有了这个,你在 nginx docker 容器之外创建了一个目录。

        步骤 1

        cd /path/to/your/nginx/data/vhost.d/ sudo vim personalblog.com

        第二步

        在新文件 personalblog.com 中添加以下行: return 301 http://www.personalblog.com$request_uri; 用ESC和:wq保存文件

        第三步

        转到 docker-compose.yml for nginx 所在的路径,然后执行以下操作: sudo docker-compose up -d --force-recreate

        注意事项

        您在 /path/to/your/nginx/data/vhost.d/ 下创建的文件必须是您的域的名称。在这种情况下,您希望从 personalblog.com 重定向到 www.personalblog.com,因此文件名为 personalblog.com。如果您按照上述存储库的说明进行操作,您将自动重定向到 https。因此,如果您只是重定向到http://www.personalblog.com,请不要担心。

        【讨论】:

          【解决方案5】:

          首先你需要克隆 git 使用:https://github.com/jwilder/nginx-proxy

          然后使用nginx.tmpl 修改它,最后使用nginx-proxy 自己重建它。

          【讨论】:

          • 这似乎是我答案的精确副本,不是吗?
          【解决方案6】:

          您需要:

          • git clone https://github.com/jwilder/nginx-proxy,
          • 修改nginx.tmpl
          • 自己重建 nginx-proxy 镜像。

          这样,您将生成一个新的 nginx-proxy 映像,其中包含您需要的指令。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-06-23
            • 2020-12-31
            相关资源
            最近更新 更多