如何简化我的nginx反向代理configuration

我终于开始设置一个Nginx反向代理来处理我在我家的多个网站,因为我只有一个外部IP地址,一切正常,但是我想知道的是,如果有一种方法可以简化我的一个网站的当前configuration比我感觉需要的时间要长。 任何input,不胜感激。

server { listen 192.168.1.176:80; server_name ighfdexplorers.com; return 301 https://www.$server_name$request_uri; } server { listen 192.168.1.176:443 ssl http2; server_name ighfdexplorers.com; return 301 https://www.$server_name$request_uri; ssl_certificate /etc/nginx/ssl/ighfdexplorers/base/fullchain.pem; ssl_certificate_key /etc/nginx/ssl/ighfdexplorers/base/privkey.pem; } server { listen 192.168.1.176:80; server_name www.ighfdexplorers.com; return 301 https://$server_name$request_uri; } server { listen 192.168.1.176:443 ssl http2; server_name www.ighfdexplorers.com; set $upstream 192.168.1.179; ssl_certificate /etc/nginx/ssl/ighfdexplorers/fullchain.pem; ssl_certificate_key /etc/nginx/ssl/ighfdexplorers/privkey.pem; location / { proxy_pass_header Authorization; proxy_pass https://$upstream; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_http_version 1.1; proxy_set_header Connection ""; proxy_buffering off; client_max_body_size 0; proxy_read_timeout 36000s; proxy_redirect off; proxy_ssl_session_reuse off; } } 

你可以为没有服务器部分的所有域做一个通用的catchallredirect,如下所示:

 server { listen 80 default_server; listen [::]:80 default_server; server_name .ighfdexplorers.com; location / { return 301 https://$host$request_uri; } } server { listen 443 ssl http2 default_server; listen [::]:443 ssl http2 default_server; server_name ighfdexplorers.com; if ($host != $server_name) { return 301 https://$server_name$request_uri; } ... ssl directives, etc... } 

使用server_name进行处理. 告诉nginx匹配任何子域前缀,或者不匹配。 由于它是默认的服务器,所以也可以匹配其他所有的东西,你可能不需要这个。

第二台服务器也是默认的服务器,但对于HTTPS,所以它将被用于所有不匹配的内容。 如果我们把所请求的$host设置为$server_name并且它们不匹配,我们将redirect到正确的名称。 这样*.ighfdexplorers.com将总是redirect到ighfdexplorers.com除非有一个特定的名称的服务器。