我在 Ubunu 18.04 上有一个 Apache 服务器,上面有一个 Drupal 8 站点,我想将其迁移到 Nginx 和 PHP7.3-FPM。
这是服务器上唯一的站点。我根本不了解 Nginx。
我使用以下命令删除了 Apache:
sudo apt autoremove --purge apache2*
这是我在 Apache 上的配置:
<VirtualHost *:80>
ServerAdmin [email protected]
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
答案1
错误消息表明您的 nginx 配置的指定行有错误。
listen :80;
这是一个拼写错误;它应该显示为:
listen 80;
答案2
根据我们在评论中的简短讨论,我最好的猜测是,有另一个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。