在 jwilder/nginx-proxy Docker 容器中重写 URL

Rewrite URL in jwilder/nginx-proxy Docker container

我正在对一些网站进行容器化。我希望能够迁移一些重写规则以自动从请求中的域名附加或删除 www

How/Where 在 jwilder/nginx-proxy Docker 容器中 nginx.tmpl 或者我可以添加一些简单的重写规则吗?

所有代理容器的一个规则是可以的,但如果可以为每个容器指定规则就更好了。

jwilder/nginx-proxy docker image allows you to add a configuration per virtual host where you can add the rewrite rules as described in here:

要在 per-VIRTUAL_HOST 基础上添加设置,请在 /etc/nginx/vhost.d 下添加您的配置文件。 per-VIRTUAL_HOST 文件必须完全按照 VIRTUAL_HOST.

命名

为了允许在添加和删除后端时动态配置虚拟主机,将外部目录挂载为 /etc/nginx/vhost.d 最有意义,而不是使用派生图像或挂载单独的配置文件。

例如,如果您有一个名为 www.app.example.com 的虚拟主机,您可以为该主机提供自定义重写配置,如下所示:

/etc/nginx/vhost.d 下创建一个名为 www.app.example.com 的文件,然后添加以下内容:

return 301 $scheme://app.example.com$request_uri;

然后创建一个新的nginx容器并将这个目录挂载到它上面。如果你检查 /etc/nginx/conf.d/default.conf 你会注意到虚拟主机已经被修改成这样:

server {
    server_name www.app.example.com;
    listen 80 ;
    access_log /var/log/nginx/access.log vhost;
    include /etc/nginx/vhost.d/www.app.example.com;
    location / {
        proxy_pass http://www.app.example.com;
    }
}

include 行包含我们编写的 return 语句,当然您可以向其中添加更多重写规则