本地开发和生产使用一个 nginx 配置

本地开发和生产使用一个 nginx 配置

我有一个具有以下架构的网站:

  • 许多服务作为 docker stack 的一部分运行
  • 以单个 nginx 作为反向代理
  • nginx 使用 certbot 终止 HTTPS
  • 本地开发docker-compose up
  • 部署到生产环境docker stack deploy(在 somedomain.com 指向的公共服务器上)

nginx 配置的重要部分如下所示:

server {
    server_name somedomain.com;
    listen 0.0.0.0:443 ssl http2 reuseport;

    # Route service A to path /service-a
    location /a-service {
        # Trick to avoid nginx aborting at startup (set server in variable)
        set $upstream_server         http://service-a;
        proxy_pass                   $upstream_server;
    }

    # Route service B to path /service-b
    location /b-service {
        # Trick to avoid nginx aborting at startup (set server in variable)
        set $upstream_server         http://service-b;
        proxy_pass                   $upstream_server;
    }
}

问题出现在我开发网站时。当时它在本地运行,somedomain.com 无法解析,因为我们只是在本地主机 / 127.0.0.1。也会certbot导致问题,因为我们对本地不感兴趣HTTPS,而且我们无法从somedomain.com

我已经非常粗略地解决了这个问题,在本地运行时根本不将 nginx 作为堆栈的一部分,但是随着服务的复杂性和数量的增加,这变得越来越不可行。我需要能够在部署之前测试包括 nginx 在内的整个解决方案。

所以我的问题是,有什么实际的方法可以只维护一个 nginx 配置同时允许在本地启动站点以使用 HTTP 进行开发本地主机/127.0.0.1HTTPS并且在具有域并同时在两个地方工作的生产环境中?

相关内容