У меня есть веб-приложение django, которое работает на сервере с IP-адресом 23.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/ford/ford.com.chained.crt;
ssl_certificate_key /etc/ssl/ford/www.ford.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/ford/new_media/;
}
location /media/ {
alias /home/apps/webapp/ford/media/;
}
}
когда я печатаю www.example1.com
или example1.com
из браузера я попал в https://www.example1.com
как и ожидалось, но теперь я настроил другой домен (example2.ford.com
) для маршрутизации на тот же сервер (23.xxx.105.49)
и актуальная проблема
когда я печатаю https://example2.ford.com
(безопасно), сервер обслуживал мне веб-приложение с тем же доменом example2.ford.com
Но когда я использую http://example2.ford.com
, мой сервер перенаправлялся на www.example1.com
чего я не хотел, так как можно внести некоторые изменения в указанный выше файл конфигурации nginx таким образом, чтобы, если кто-то попытается получить доступ example2.ford.com
используя http или https, он должен перенаправить на https://example2.ford.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.ford.com www.example2.ford.com ;
location / {
return 301 https://www.example2.ford.com$request_uri;
}
}
Вам необходимо настроить новый виртуальный хост для example2.xyz.com. Nginx сначала прочитает имя домена, а затем вызовет соответствующий файл conf, в противном случае - conf.
В nginx conf vhost слушайте порт 80 отдельно для example1 и example2, или вы также можете добавить listen 80 в conf по умолчанию для перенаправления на https.
Используйте модуль карты для сопоставления множественных перенаправлений, как в примере ниже.
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