nginx根據域名重定向
我有一個 django Web 應用程序,它在 IP 地址
xx.xxx.105.49
和域為的伺服器上執行www.example1.com
下面是我的nginx配置
server { listen 80; server_name example1.com www.example1.com ; location / { return 301 https://www.example1.com$request_uri; } } server { listen 443 ssl; server_name example1.com www.example1.com; ssl_certificate /etc/ssl/company/company.com.chained.crt; ssl_certificate_key /etc/ssl/company/www.company.com.key; ssl_session_timeout 20m; ssl_session_cache shared:SSL:10m; # ~ 40,000 sessions ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # SSLv2 # ssl_ciphers ALL:!aNull:!eNull:!SSLv2:!kEDH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+EXP:@STRENGTH; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; client_max_body_size 20M; location / { proxy_pass http://127.0.0.1:8001; proxy_connect_timeout 300s; proxy_read_timeout 300s; } location /static/ { alias /home/apps/webapp/company/new_media/; } location /media/ { alias /home/apps/webapp/company/media/; } }
當我鍵入
www.example1.com
或example1.com
從瀏覽器中鍵入時,它https://www.example1.com
按預期將我帶到但是,現在我已經配置了另一個域(example2.company.com
)以路由到同一伺服器(xx.xxx.105.49)
,實際問題是當我輸入
https://example2.company.com
(安全)時,伺服器正在為我提供具有相同域的 webappexample2.company.com
但是當我使用時
http://example2.company.com
,我的伺服器正在重定向到我www.example1.com
不想要的,所以如何對上面的 nginx 配置文件進行一些更改,以便如果有人嘗試example2.company.com
使用 http 或 https 訪問它應該重定向到https://example2.company.com
如下所示server { listen 80; server_name example1.com www.example1.com ; location / { return 301 https://www.example1.com$request_uri; } } server { listen 80; server_name example2.company.com www.example2.company.com ; location / { return 301 https://www.example2.company.com$request_uri; } }
您需要為 example2.xyz.com 設置一個新的虛擬主機。Nginx 會先讀取域名,然後分別呼叫 conf 文件,否則預設 conf。
在 vhost 的 nginx conf 中分別為 example1 和 example2 監聽埠 80,或者您也可以在預設配置中添加監聽 80 以重定向到 https。
使用 map 模組映射多個重定向,如下例所示。
map $http_host $new { 'exp1.xyz.com' '1'; 'exp2.xyz.com' '2'; } server { listen 80; if ($new = '1') { rewrite ^(.*) https://exp1.xyz.com$1 redirect; } if ($new = '2') { rewrite ^(.*) https://exp2.xyz.com$1 redirect; } }
要在 nginx 中創建虛擬主機,請參閱此連結 https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-virtual-hosts-server-blocks-on-ubuntu-12-04-lts- -3