我有一个 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
(安全)时,服务器都会使用相同的域名为我提供 Web 应用程序example2.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;
}
}
答案1
您需要为 example2.xyz.com 设置一个新的 vhost。Nginx 将首先读取域名,然后分别调用 conf 文件,否则将调用默认 conf。
在 nginx vhost conf 中为 example1 和 example2 分别监听 80 端口,或者您也可以在默认 conf 中添加监听 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 中创建 vhost,请参考此链接 https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-virtual-hosts-server-blocks-on-ubuntu-12-04-lts--3