![NGINX 通过三级域名转发](https://linux22.com/image/784102/NGINX%20%E9%80%9A%E8%BF%87%E4%B8%89%E7%BA%A7%E5%9F%9F%E5%90%8D%E8%BD%AC%E5%8F%91.png)
我有两个本地 Web 应用程序,应该可以从外部网络访问,但是只有一个外部 IP。这两个 Web 应用程序都使用无法更改的 443 端口。因此,任务是以这样的方式配置 nginx,以便它可以基于三级域转发传入请求。假设我的 Web 应用程序位于 192.168.1.55 和 192.168.1.65 上。我的公网 IP 是 9*.23*.15*.12,并且我配置了 2 个 dns A 条目 site1.example.com 和 site2.example.com,它们都映射到我的公网 IP。在我的理想世界中,我希望 nginx 将 $server_name = site1.example.com 的所有传入请求转发到 192.168.1.55,将 $server_name = site2.example.com 转发到 192.168.1.65 请指教如何实现。目前,我只能配置到其中一个 Web 应用程序的简单转发。
server {
listen 443 ssl http2;
server_name site1.example.com;
ssl on;
ssl_certificate /etc/letsencrypt/live/blog.zeroxzed.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/blog.zeroxzed.ru/privkey.pem;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
location /.well-known/acme-challenge/ {
root /web/sites/example.com/www/;
}
location / {
proxy_pass https://192.168.1.55;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
}