Как перенести мой сервер Apache на Nginx?
У меня есть сервер 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
2 ответа
Сообщение об ошибке показывает, что у вас есть ошибка в указанной строке вашей конфигурации 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.