У меня есть сервер Apache на Ubunu 18.04 с сайтом Drupal 8, который я хочу перенести на Nginx и PHP7.3-FPM.
Это единственный сайт на сервере. Я вообще не знаю Nginx.
Я удалил Apache с помощью следующей команды:
sudo apt autoremove --purge apache2*
Вот конфигурация, которая у меня была на Apache:
<VirtualHost *:80>
ServerAdmin contact@domaine.com
ServerName domaine.com
ServerAlias www.domaine.com
Protocols h2 http/1.1
DocumentRoot /var/www/www-domaine-com/web/
<Directory /var/www/www-domaine-com/web>
Options +Includes -Indexes +FollowSymLinks
AllowOverride All
Require all granted
</Directory>
<FilesMatch \.php$>
SetHandler "proxy:unix:/var/run/php/php7.3-fpm.sock|fcgi://localhost/"
</FilesMatch>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Вот как я установил Nginx:
sudo apt install nginx
sudo ufw allow in "Nginx HTTP"
Я тестирую IP-адрес своего сервера, и отображается страница Nginx.
sudo unlink /etc/nginx/sites-enabled/default
Вот моя конфигурация Nginx:
server {
listen :80;
listen [::]:80;
server_name domaine.com www.domaine.com;
root /var/www/www-domaine-com/web;
index index.html index.php;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
include fastcgi_params;
fastcgi_pass unix:/run/php/php7.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
Создаю символическую ссылку своей новой конфигурации:
sudo ln -s /etc/nginx/sites-available/www.domaine.com /etc/nginx/sites-enabled/
Тестирую свою конфигурацию:
sudo nginx -t
Отображается это сообщение:
nginx: [emerg] no host in ":80" of the "listen" directive in /etc/nginx/sites-enabled/www-domaine-com:2
nginx: configuration file /etc/nginx/nginx.conf test failed
Сообщение об ошибке показывает, что в указанной строке конфигурации nginx есть ошибка.
listen :80;
Это опечатка; он должен выглядеть так:
listen 80;
Основываясь на нашем кратком обсуждении в комментариях, я могу предположить, что есть еще один server
блокировать в /etc/nginx/nginx.conf
который действует как сервер по умолчанию, поэтому, когда вы получаете доступ к нему по IP, nginx обслуживает этот server
блок вместо того, который вы настроили в /etc/nginx/sites-available/www-s1biose-com
. Вы можете удалить это server
блокировать от nginx.conf
, или просто удалите default_server
из server_name
директиву в нем и добавить default_server
к server_name
в вашей конфигурации.
Вы не указываете, какой дистрибутив вы используете, но также проверяете, что nginx.conf
файл включает файлы из /etc/nginx/sites-available/
. CentOS по умолчанию не работает, я не уверен в Ubuntu / Debian и других.
Что касается того, почему вы получаете отказ в соединении при доступе по доменному имени (которое должно работать, поскольку оно соответствует server_name
в вашей конфигурации), убедитесь, что ваше разрешение DNS указывает на правильный IP-адрес, и убедитесь, что ваш браузер не пытается использовать HTTPS вместо HTTP, поскольку вы не настроили HTTPS.