如何在jwilder / nginx-proxy下将no-www重定向到www?

时间:2016-03-13 18:18:47

标签: nginx docker

我使用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。

6 个答案:

答案 0 :(得分:2)

你需要:

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

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

答案 1 :(得分:2)

您可以在不更改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;

答案 2 :(得分:1)

简介

很遗憾,您没有指定技术设置。 所以我必须做出一些假设。 假设您要使用完全支持的docker环境以及以下docker镜像启动博客:

  • nginx-proxy,
  • docker-gen,
  • letsencrypt,
  • ghost(博客软件)和
  • MariaDB的。

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

要求

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

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

在为ghost渲染最新图像时可能存在一个泊坞窗错误。所以更改docker-compose.yml ghost:最新 ghost:1.22.1

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

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

第1步

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

第2步

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

保存文件

第3步

转到您的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,请不要担心。

答案 3 :(得分:1)

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

下面的示例仅显示HTTP,但是如果您喜欢使用JrC的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

答案 4 :(得分:0)

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

克隆git

然后使用nginx.tmpl进行修改,最后使用nginx-proxy图片自行重建。

答案 5 :(得分:0)

不要忘记更新变量 VIRTUAL_HOST 以获得 www 和非 WW 主机名:

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