两个域和相同的configuration

如果服务器名称是sub1.mysite.com,我有一个Nginx服务器,可将传入呼叫redirect到端口80到443。 这是configuration文件:

server { listen 80; server_name sub1.myite.com; return 301 https://sub1.mysite.com$request_uri; } server { listen 443 ssl; include ssl-wedding.conf; server_name sub1.mysite.com; access_log logs/webapp.access.log; proxy_pass_header Server; root /var/www/nginx/wedding; index index.php; include vary_header.conf; include whitelist.conf; location /apiproxy/ { proxy_pass https://apidev.apisite.com/; } location / { try_files $uri $uri/ /index.php?$args; } location ~ .php$ { fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_pass wedding_backend; fastcgi_index index.php; try_files $uri $uri /index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_script_name; include fastcgi_params; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_intercept_errors on; fastcgi_ignore_client_abort on; fastcgi_connect_timeout 60; fastcgi_send_timeout 180; fastcgi_read_timeout 180; fastcgi_buffer_size 128k; fastcgi_buffers 4 256k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; } } upstream wedding_backend { server unix:/var/www/php/fpm-wedding.sock; } 

我需要做的是接受来自sub2.mysite.com的呼叫也redirect从80到443的任何调用,并使用相同的configurationsub1。 我图2半固定这种方式,但不符合我所需要的。 一种方法是将第一个服务器块更改为:

 server { listen 80; server_name sub1.myite.com sub2.mysite.com; return 301 https://sub1.mysite.com$request_uri; } 

但是,这将改变浏览器的url到sub1,我会喜欢他留在sub2。 另一种方法是使用sub2的服务器名称来复制块1和2,但是不能很好地维护,因为如果我在一个块中改变某些东西,我将不得不在它的副本中改变它。

所以,理想情况下,我想要的是块1只是改变端口,并保持完整的子域。 和2块来处理configuration,如果我可以添加一个http头,这也将是有用的我的应用程序,如果我是在sub1或sub2,例如。 X-SubDomainOrigin:“sub1”。

这将做一个301redirect到https的客户端提供的域主机头:

server { listen 80; server_name *.mysite.com; rewrite ^ https://$host$request_uri? permanent; }