nginx 反代问题

2017-11-14 07:29:44 +08:00
 dynaguy

已有一个 WEB 服务器 A 在内网 192.168.1.3,上有 https://a.domainA.com,和 https://b.domainA.com 。用 apache2,LE 的 SSL 证书。路由器直接 FORWARD 80 和 443 口到 192.168.123.3

现在又加了一个服务器 B 在 192.168.1.8,装了 nginx,上有 https://c.domainB.comhttps://d.domainB.com 也是 LE 的 SSL 证书。路由器上 FORWARD 改到了 192.168.1.8 ( 80,443 口)

这样从公网上已经访问不了 a.domainA.comb.domainA.com 。现在想用 nginx 反代将 A 上的网站也同时上线。请问:

  1. 如何配置 nginx?
  2. LE 的 SSL 证书是否要都在 B 服务器上?还是两个服务器都要有?
2103 次点击
所在节点    问与答
12 条回复
paranoiagu
2017-11-14 07:50:49 +08:00
路由器反代到 nginx 服务器上,nginx 里面再根据域名访问对应的站点。4 个域名的 ssl 都通过 nginx 配置。
shiji
2017-11-14 08:44:30 +08:00
如何配置的方法等会儿再说。先想方案,再写配置。
比如你想用 B 转发,那所有 ssl 证书 B 都要有。
本身的两个域名就继续用原来的配置,a 的两个域名配置上 ssl 转发给 a。 至于 ab 直接需不需要 ssl 你自己决定
s609926202
2017-11-14 09:57:55 +08:00
我没看懂为何加了 B 服务器就访问不了 a、b 子域名了,,,,
fox0001
2017-11-14 12:20:54 +08:00
@paranoiagu #1 1 楼正解
dynaguy
2017-11-18 01:26:13 +08:00
@shiji
@paranoiagu
@fox0001
谢谢指导!
经历一番折腾,终于先把 LE 的 Cert 弄好了。现在在 B 服务器上有两个证书( domainA 和 domainB 各一个)。
下面要继续配置反代,各位有示例教程吗?

另外,原来 A 服务器上的 https 站点要改动吗?证书和 B 上的同名,有问题吗?怕过期就不能用了。我有点晕,反代是不是 B 的 https 反代到 A 的 https ?还是到 A 的 http(不加密)?
shiji
2017-11-18 01:39:56 +08:00
@dynaguy 这是我的一个双向 https 反代的配置。
https://gist.github.com/shijij/54c9b21f26c08a15a70c182f03cb15b4
你可能需要把 ssl_ecdh_curve prime256v1; 这一行删掉。
dynaguy
2017-11-18 05:36:40 +08:00
@shiji
感谢!
先问个问题,
proxy_pass https://1.2.3.4;
意思是反代到 https://1.2.3.4,那么 1.2.3.4 上也要有一套 SSL 证书啦?这是单独一套证书,还是把 B 服务器的证书文件复制过去呢?

我的 A 服务器上原有一套证书,现在 B 上用了同样的域名又整了一个新的,有点糊涂了! A 上的咋办呢?
shiji
2017-11-18 05:43:24 +08:00
@dynaguy 我这个是双向 SSL 的配置,所以 1.2.3.4 也需要证书。需要的是 https://a.domainA.com,和 https://b.domainA.com 的证书。只要是有效的就行。
dynaguy
2017-11-18 05:59:47 +08:00
@shiji
那在 A 和 B 上同时 renew domainA.com 的证书,会不会被 LE 打脸?
shiji
2017-11-18 06:04:42 +08:00
@dynaguy 我印象里应该是可以的。 如果不可以就把 B 上面 domainA 的证书粘贴到 A 上面去喽。
dynaguy
2017-11-21 01:49:18 +08:00
@shiji
反代搞好了,在B服务器上参照了你提供的配置样板。A服务器目前未做任何改动。
到 SSL Lab 测了一下,外网访问实际用的是B服务器上的SSL证书。现在就看AB服务器先后 renew 同一域名的证书会不会有麻烦了。
可不可以让A服务器改用自己签发的证书?整个50年的一劳永逸。
shiji
2017-11-21 03:46:38 +08:00
@dynaguy 自签发是可行的。
Nginx 有个配置,叫:proxy_ssl_verify
默认是 proxy_ssl_verify off
所以默认 B 和 A 直接不会验证证书有效性,会耽误效率。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/406144

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX