Назад | Перейти на главную страницу

nginx: несколько сайтов на одном сервере

У меня есть три веб-сайта, которые я хочу обслуживать с одного сервера. Сервер - это капля 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

РЕДАКТИРОВАТЬ: Дополнительные вещи, которые я попробовал сейчас:

По-прежнему никаких изменений в поведении и перенаправление на сервер по умолчанию

РЕДАКТИРОВАТЬ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.

Решение этой проблемы заключалось не в настройке самого сервера, а в двух вещах:

  1. В интерфейсе godaddy добавить пользовательские серверы имен, указывающие на ns1.digitalocean.com, ns2.digitalocean.com и ns3.digitalocean.com godaddy_screenshot
  2. В интерфейсе digitalocean на вкладке сети добавьте домены к трем веб-сайтам. digitalocean_screenshot

Как только это было сделано, подождав несколько часов, все заработало.

Я не уверен, что это поможет, но попробовать стоит. Слишком сложно форматировать комментарий. Если не получится, подскажите, подумаю еще или ответ удалю.

По сути, это очень простой конфиг, в котором нет ничего особенного.

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 на другой сервер, а затем проверьте все три сайта. Я просто хочу убедиться, что все изменилось так, как ожидалось.