V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
dynaguy
V2EX  ›  问与答

nginx 反代问题

  •  
  •   dynaguy · 2017-11-14 07:29:44 +08:00 · 2246 次点击
    这是一个创建于 2566 天前的主题,其中的信息可能已经有所发展或是发生改变。

    已有一个 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 服务器上?还是两个服务器都要有?
    12 条回复    2017-11-21 03:46:38 +08:00
    paranoiagu
        1
    paranoiagu  
       2017-11-14 07:50:49 +08:00 via Android   ❤️ 1
    路由器反代到 nginx 服务器上,nginx 里面再根据域名访问对应的站点。4 个域名的 ssl 都通过 nginx 配置。
    shiji
        2
    shiji  
       2017-11-14 08:44:30 +08:00 via Android   ❤️ 1
    如何配置的方法等会儿再说。先想方案,再写配置。
    比如你想用 B 转发,那所有 ssl 证书 B 都要有。
    本身的两个域名就继续用原来的配置,a 的两个域名配置上 ssl 转发给 a。 至于 ab 直接需不需要 ssl 你自己决定
    s609926202
        3
    s609926202  
       2017-11-14 09:57:55 +08:00
    我没看懂为何加了 B 服务器就访问不了 a、b 子域名了,,,,
    fox0001
        4
    fox0001  
       2017-11-14 12:20:54 +08:00
    @paranoiagu #1 1 楼正解
    dynaguy
        5
    dynaguy  
    OP
       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
        6
    shiji  
       2017-11-18 01:39:56 +08:00   ❤️ 1
    @dynaguy 这是我的一个双向 https 反代的配置。
    https://gist.github.com/shijij/54c9b21f26c08a15a70c182f03cb15b4
    你可能需要把 ssl_ecdh_curve prime256v1; 这一行删掉。
    dynaguy
        7
    dynaguy  
    OP
       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
        8
    shiji  
       2017-11-18 05:43:24 +08:00   ❤️ 1
    @dynaguy 我这个是双向 SSL 的配置,所以 1.2.3.4 也需要证书。需要的是 https://a.domainA.com,和 https://b.domainA.com 的证书。只要是有效的就行。
    dynaguy
        9
    dynaguy  
    OP
       2017-11-18 05:59:47 +08:00
    @shiji
    那在 A 和 B 上同时 renew domainA.com 的证书,会不会被 LE 打脸?
    shiji
        10
    shiji  
       2017-11-18 06:04:42 +08:00   ❤️ 1
    @dynaguy 我印象里应该是可以的。 如果不可以就把 B 上面 domainA 的证书粘贴到 A 上面去喽。
    dynaguy
        11
    dynaguy  
    OP
       2017-11-21 01:49:18 +08:00
    @shiji
    反代搞好了,在B服务器上参照了你提供的配置样板。A服务器目前未做任何改动。
    到 SSL Lab 测了一下,外网访问实际用的是B服务器上的SSL证书。现在就看AB服务器先后 renew 同一域名的证书会不会有麻烦了。
    可不可以让A服务器改用自己签发的证书?整个50年的一劳永逸。
    shiji
        12
    shiji  
       2017-11-21 03:46:38 +08:00
    @dynaguy 自签发是可行的。
    Nginx 有个配置,叫:proxy_ssl_verify
    默认是 proxy_ssl_verify off
    所以默认 B 和 A 直接不会验证证书有效性,会耽误效率。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1028 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 23:12 · PVG 07:12 · LAX 15:12 · JFK 18:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.