Настроить мультисайт на сервере nginx через IP, используя Digital Ocean - PullRequest
0 голосов
/ 14 октября 2018

Проблема: невозможно подключиться к двум веб-сайтам, обработанным на одном сервере nginx, т.е. <<ip-address>> & <<ip-address>>/web2

Конфигурация в Digital Ocean:

  1. 1 Droplet / Ubuntu 18 / LEMP
  2. У меня есть два тестовых сайта PHP в среде CodeIgniter
  3. Конфигурация папки для первого веб-сайта: /var/www/html/web1/
  4. Конфигурация папки для второго веб-сайта: /var/www/html/web2/

Настройка Nginx Server Block для двух сайтов

web1.com

server {
        listen 80;
        root /var/www/html/web1;
        index index.php index.html index.htm index.nginx-debian.html;
        server_name <<ip-address>>;

        location / {
                try_files $uri $uri/ /index.php;
        }

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        }

        location ~ /\.ht {
                deny all;
        }
}

web2.com

server {
        listen 80;
        root /var/www/html/web2;
        index index.php index.html index.htm index.nginx-debian.html;
        server_name <<ip-address>>/web2;

        location /web2/ {
                try_files $uri $uri/ /index.php;
        }

        location ~ \.php$ {
                include snippets/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        }

        location ~ /\.ht {
                deny all;
        }
}

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

Пожалуйста, помогите!

Спасибо.

1 Ответ

0 голосов
/ 14 октября 2018

То, что вы пытаетесь сделать, это не то, как nginx работает из коробки.Это может, с большим трудом, в конечном итоге работать таким образом, но я не думаю, что оно того стоит.

Видите, конфигурация nginx предполагает, что server_name будет либо FQDN (полное доменное имя)) или IP-адрес, но не полный URL с путем.В вашем случае запрос на ip-адрес / web2, вероятно, фактически соответствует конфигурации web1 (поэтому указывает на /var/www/html/web1/web2/, который не существует)

Лучший способ решить эту проблему (при условии, что вы хотите сохранитьоба сайта в одной и той же капле): получите полное доменное имя для каждого сайта.Это может быть поддомен для домена, который у вас уже есть (например, web1.sharad.com и web2.sharad.com) ... Затем в каждом из конфигурационных файлов nginx используйте соответствующее имя сервера (web1.sharad.com и web2.sharad)..com), проверьте наличие опечаток и ошибок с помощью sudo nginx -t и, если все в порядке, перезапустите nginx с помощью sudo systemctl restart nginx

...