Ubuntu
如何將我的 Apache 伺服器遷移到 Nginx?
我在 Ubunu 18.04 上有一個 Apache 伺服器,有一個 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。