如何为 Nginx-proxy 后面的服务添加独立的设置

  • fennng 

Nginx-proxy 提供非常简便的网站和其它基于HTTP的服务中转, 而且通过一个插件还能实现动态自动更新HTPS证书。

nginx-proxy docker 镜像 hub.docker.com/r/jwilder/nginx-proxy

我曾经发过两个视频介绍它。有兴趣的可以看看。

如何使用 Nginx-proxy 做反向代理实现单端口多服务(网站)

如何使用 Nginx-proxy 反向代理把HTTP网站(服务)变成HTTPS

今天我来介绍一下如何对单独的某个服务或网站添加独立的设置。

因为Nginx-proxy 的配置文件是动态生成的, 如果我们去修改生成的文件, 当文件被重新生成的时候, 我们的修改就丢失了, 所以并没有用。
nginx-proxy 给我们提供了解决方案。

比如我现在希望我的网站在回复的时候加上一个HTTP 头, 比如我要加这样一个HTTP头
test: works

我们使用 docker exec -it 容器名 bash 的方式登录到容器 在 /etc/nginx/vhost.d 中添加这样一个文件 www.dengnz.com_location
然后在文件里面添加如下一行

add_header test works;

然后我们重启我们网站的容器, 这里我就是重启我的 wordpress 容器 。 这样 nginx-proxy 才会重新读取配置文件。 如果有小伙伴知道更好的方法, 请在下方留下宝贵的评论。

以下重启nginx 的方法应该也有效 /usr/sbin/nginx -s reload nginx.org/en/docs/beginners_guide.html

现在刷新我的网站, 就发现 HTTP response 里面有 test: works 了


除了加HTTP头, 其它任何在 location 里面可以用的参数都是可以使用的。

这个方法应该会把 www.dengnz.com_location 里面的设置应用在所有的 location 里, 并不能区分不同的 location, 在这里, 这并不是问题, 因为我们使用 nginx-proxy 本身就不会对不同的 location 做不同的配置。

如果不是改变 location 的内容, 而是改变 server 级别的内容。 则添加一个 www.dengnz.com 文件, 也就是去掉 _location 后缀。
然后这里面你可以加上server级别的设置。 当然也可以加上其它的 location, 这里你就可以对不同的 location 做设置了。
以下是一个默认的配置, 是由 nginx-proxy companion 添加的用来生成证书的一个验证位置。


如果要修改 http 级别的配置, 这个就是共享的配置了。 可以在

/etc/nginx/conf.d/ 底下加一个 以 .conf 结尾的文件, 文件名任意

比如我要给我的 wordpress 加上 rate limit

我在 /etc/nginx/conf.d/ 底下加上一个叫 wordpess.conf 的文件, 文件名可以是任意,我用 wordpress.conf 只是应景。

然后我加入以下这行

limit_req_zone $binary_remote_addr zone=wordpress:10m rate=1r/s;

这里我定义了一个 zone, 名字 wordpress

然后我再到之前提到的 www.dengnz.com_location 文件里加上这行

limit_req zone= wordpress burst=10 nodelay;

这样,我的 rate limit 就加上了。 重启 nginx 或 wordpress 容器, 让它工作。

发表评论

您的电子邮箱地址不会被公开。