У меня есть три веб-сайта, которые я хочу обслуживать с одного сервера. Сервер - это капля Ubuntu в digitalocean, веб-сайты находятся в моем домашнем каталоге в ~/site1
~/site2
и ~/site3
. У меня nginx на складе nginx.conf
. У меня есть три файла в sites-available
(site1.com
site2.com
& site3.com
) В каждом файле они имеют следующую структуру согласно каждому соответствующему сайту:
server {
listen 80;
listen [::]:80;
root /home/user/site1;
index.html
server_name site1.com *.site1.com
return 301 https://$server_name$request_uri;
}
Три файла связаны символическими ссылками в sites-enabled
и в обоих sites-enabled
и sites-available
в default
файл удален. Также на сайте 2 есть default_server
добавлен к концу двух listen
линии
Nginx запускается нормально, без ошибок:
$ sudo nginx -t
$ service nginx restart
Но когда я перехожу на каждый соответствующий веб-сайт, все они направляют меня обратно на сайт default_server site2. Домены сайта были куплены на godaddy.com, и все они указывают на IP этого сервера.
Как я могу решить эту проблему, чтобы каждый веб-сайт правильно перенаправлялся? Я новичок в этой стороне вещей и самоучка, поэтому, если возможно, небольшое объяснение мне очень поможет.
Следующие места помогли мне добраться до вышеуказанного:
Nginx блокирует несколько доменов для перенаправления всего трафика на https?
Домен перенаправляет на неправильный сайт в nginx, несколько сайтов в файлах конфигурации
https://www.digitalocean.com/community/questions/multiple-sites-using-nginx
https://stackoverflow.com/questions/11693135/multiple-websites-on-nginx-sites-available
РЕДАКТИРОВАТЬ: Дополнительные вещи, которые я попробовал сейчас:
Удален return 301 https://$server_name$request_uri;
строка из каждого блока файлового сервера.
Очистил кеш от нескольких браузеров и устройств.
Изменен корневой путь на /var/www/html/site1-2-3
Добавление SERVERIP site1.com
, SERVERIP site2.com
, SERVERIP site3.com
к /etc/hosts
По-прежнему никаких изменений в поведении и перенаправление на сервер по умолчанию
РЕДАКТИРОВАТЬ2: Ниже приведены полные файлы конфигурации:
/etc/nginx/sites-available/site1.com
server {
listen 80;
listen [::]:80;
root /home/deploy/site1;
index index.html index.htm index.nginx-debian.html;
server_name site1.com *.site1.com;
location / {
try_files $uri $uri/ =404;
}
}
/etc/nginx/sites-available/site2.com
server {
listen 80 default_server;
listen [::]:80 default_server;
root /home/deploy/site2/current/_site;
index index.html index.htm index.nginx-debian.html;
server_name site2.com *.site2.com;
location / {
try_files $uri $uri/ =404;
}
}
/etc/nginx/sites-available/site3.com
server {
listen 80;
listen [::]:80;
root /home/deploy/site3;
index index.html index.htm index.nginx-debian.html;
server_name site3.com *.site3.com;
location / {
try_files $uri $uri/ =404;
}
}
/etc/nginx/nginx.conf
user www-data;
worker_processes auto;
pid /run/nginx.pid;
events {
worker_connections 768;
# multi_accept on;
}
http {
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 2048;
# server_tokens off;
server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# SSL Settings
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Gzip Settings
##
gzip on;
gzip_disable "msie6";
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/javascript text/xml app$
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}
#mail {
# # See sample authentication script at:
# # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
# # auth_http localhost/auth.php;
# # pop3_capabilities "TOP" "USER";
# # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
# server {
# listen localhost:110;
# protocol pop3;
# proxy on;
# }
#
# server {
# listen localhost:143;
# protocol imap;
# proxy on;
# }
#}
РЕДАКТИРОВАТЬ3 Я заметил, что версия nginx была 1.10.3, которая не является самой последней, поэтому я удалил ее с помощью apt-get remove purge и т. Д. Затем я загрузил и собрал из исходного кода 1.12.0 целиком ./configure, make, make install, он зависел от нескольких других пакетов, но после завершения и установки серверных блоков, включенных в nginx.conf
, У меня все еще та же проблема с перенаправлением на default_server.
Решение этой проблемы заключалось не в настройке самого сервера, а в двух вещах:
Как только это было сделано, подождав несколько часов, все заработало.
Я не уверен, что это поможет, но попробовать стоит. Слишком сложно форматировать комментарий. Если не получится, подскажите, подумаю еще или ответ удалю.
По сути, это очень простой конфиг, в котором нет ничего особенного.
server {
server_name site1.com www.site1.com;
listen 80;
root /home/deploy/site1;
try_files $uri $uri/ =404;
index index.html index.htm index.nginx-debian.html;
}
Кроме того, если это не сработает, переместите оператор default_server на другой сервер, а затем проверьте все три сайта. Я просто хочу убедиться, что все изменилось так, как ожидалось.