【发布时间】: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(https://github.com/jwilder/nginx-proxy),但发现无法修改此处提到的 .htaccess (Nginx no-www to www and www to no-www)。谁能告诉我如何在上面的 jwilder/nginx-proxy 下将 no-www 重定向到 www。
【问题讨论】:
不要忘记更新变量 VIRTUAL_HOST 以同时拥有 www 和非 WW 主机名:
VIRTUAL_HOST=www.target-host.com, target-host.com
【讨论】:
这可能有点晚了,但我发现这里的解决方案太花哨了,所以我为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
【讨论】:
您可以在不更改 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;
【讨论】:
很遗憾,您没有指定您的技术设置。 所以我必须做一些假设。 假设您想使用完全受支持的 docker 环境和以下 docker 镜像来创建博客:
因此,您注册了一个名为 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
在 nginx-proxy 设置(由上面的 @evertramos 存储库描述)中,您在 .env 文件中指定了您的 Nginx 文件路径(查看 NGINX_FILES_PATH=/path/to/your/nginx/data)。有了这个,你在 nginx docker 容器之外创建了一个目录。
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,请不要担心。
【讨论】:
首先你需要克隆 git 使用:https://github.com/jwilder/nginx-proxy
然后使用nginx.tmpl 修改它,最后使用nginx-proxy 自己重建它。
【讨论】:
您需要:
git clone https://github.com/jwilder/nginx-proxy,nginx.tmpl和这样,您将生成一个新的 nginx-proxy 映像,其中包含您需要的指令。
【讨论】: