如何使用 nginx 和 proxy_pass 为每个子域创建子域

Ant*_*ony 5 nginx reverse-proxy subdomain

我目前在我的服务器上设置了 nginx my.server.com。使用当前配置,我使用http://my.server.com/app1或访问不同的应用程序http://my.server.com/app2

我有一个这样的apps.conf位置:/etc/nginx/sites-enabled/

upstream app1_servers {
    server 172.12.11.10:8080;
}
upstream app2_servers{
    server 172.12.11.10:9090;
}
server {
    listen 80;
    server_name my.server.com;
    return 301 https://my.server.com/$request_uri; #force https
}

server {
    listen 443;
    ssl on;
    ssl_certificate /etc/ssl/my.server.com/cert.pem;
    ssl_certificate_key /etc/ssl/my.server.com/priv.pem;
    server_name my.server.com;

    location /app1 {
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Host $host;
            proxy_set_header X-Forwarded-Server $host;
            proxy_set_header X-Forwarded-Proto https;
            proxy_pass http://app1_servers/app1;
            proxy_redirect http://$host https://$host;
          proxy_set_header Host $host;
    }
    location /app2 {
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Host $host;
            proxy_set_header X-Forwarded-Server $host;
            proxy_set_header X-Forwarded-Proto https;
            proxy_pass http://app2_servers/app2;
            proxy_redirect http://$host https://$host;
            proxy_set_header Host $host;
    }
}
Run Code Online (Sandbox Code Playgroud)

问题

上面的效果很好。但是,现在我想改变访问app1和 的方式app2。我想在仍然保持强制 ssl 并执行以下操作的同时http://app1.my.server.com访问它们http://app2.my.server.comproxy_pass

我需要进行哪些配置更改才能使其生效?此外,我想将每个应用程序的配置设置保留在其单独的文件中。

Tim*_*Tim 0

这应该很容易。您只需为每个子域创建服务器块,获取子域的 SSL 证书(除非主证书是通配符证书),然后通过一些调整复制适用的位置块。

像这样的东西应该可以工作,尽管我还没有测试过它,所以它几乎肯定需要一些调整。

server {
  listen 80;
  server_name app1.server.com;
  return 301 https://app1.server.com/$request_uri; #force https
}

server {
  listen 443;
  ssl on;
  ssl_certificate /etc/ssl/app1.server.com/cert.pem; # changed
  ssl_certificate_key /etc/ssl/app1.server.com/priv.pem; # changed
  server_name app1.server.com; # changed

  location / { # changed
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Server $host;
        proxy_set_header X-Forwarded-Proto https;
        proxy_pass http://app1_servers/app1;
        proxy_redirect http://$host https://$host;
        proxy_set_header Host $host;
  }
Run Code Online (Sandbox Code Playgroud)