我使用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。
答案 0 :(得分:2)
你需要:
git clone https://github.com/jwilder/nginx-proxy
,nginx.tmpl
和这样,您将生成一个新的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镜像启动博客:
因此,您注册了名为 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
在nginx-proxy设置中(由上面的@evertramos存储库描述)你在.env文件中指定了你的Nginx文件路径(检查 NGINX_FILES_PATH = / path / to / your / nginx / data <的行/ em>的)。有了这个,你在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
,请不要担心。
答案 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
答案 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