我有example.com
以下用例:
- 仅限 SSL
- www. 将被重定向到 example.com(没有 www.)
- example.com 将反向代理到 :3000
- fix1.example.com 将反向代理到 :3001
- fix2.example.com 将反向代理到 :3002
- ...
- *.example.com 将反向代理到 :4000
- *.example.com/admin 将反向代理到 :5000
- example.com/admin、fix1.example.com、fix2.example.com,... 没有 /admin,并且不能反向代理到 :5000
在我当前的配置中,我的 sites-available / sites-enabled 中有以下文件:
- 示例网站
- fix1.example.com
- fix2.example.com
- ...
- wild.example.com
由于没有其他文件,每个文件都配置了自己的部分。但我最终得到了重复或冲突的配置,所以我在想,在一个文件中一定有一个更好的方法,可以处理包含所有用例的整个域。
仅 SSL 而没有 www 部分很简单:
server {
if ($host = www.example.com) {
return 301 https://$host$request_uri;
}
server_name www.example.com;
return 301 $scheme://example.com$request_uri;
}
server {
if ($host = example.com) {
return 301 https://$host$request_uri;
}
listen 80;
server_name example.com;
return 301 http://$server_name$request_uri;
}
但是,如何将固定子域名和通配符子域名与 /admin 路径一起设置?
这是我使用的块示例.com代理人:
server {
listen 443 ssl http2;
server_name example.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
ssl_certificat #...
ssl_certificat_key #...
}