網上一搜一大堆配置文件。大部分都是對的。下面我說下我遇到的問題。先給上對的配置圖
無非就是添加虛擬空主機頭,然后nginx識別到返回固定值403-404或者500更或者是自定義的錯誤頁
[root@localhost nginx]# find / -name nginx.conf /etc/nginx/nginx.conf [root@localhost nginx]# vi /etc/nginx/nginx.conf 編輯這個文件頁。nginx加載的是這個配置。
編輯這個文件一定要把新添加的內容放在前面,因為配置是從上往下匹配規則的。
server { listen 80 default; server_name _; # return 403; ##這里可以選擇403或者404-500甚至自定義網頁 rewrite ^(.*) http://www.xxxx.com; ###我這個是為了避免我的網站ip訪問的流量流失,做了重定向至自己的域名 }
然后重啟nginx生效
systemctl restart nginx.service
注意我的這個nginx.conf文件是沒有域名那些指定的,我最下面這句話就是nginx.conf加載指定配置文件。具體可以看我連接:https://www.cnblogs.com/Crazy-Liu/p/10879740.html
新添加的這個代碼一定要放在其他配置文件之前。所以我之前放在nginx.conf上
現在我說說我遇到的問題。一開始我就這么設置結果各種問題,要么是域名ip都打不開或者就是域名能打開ip打不開。這種情況一定是配置文件沖突了,不用想!!
我錯的是在這這個問題上沖突了。我的nginx.conf已經配置是加載/etc/nginx/conf.d/下的所有.conf文件,而恰恰我這個conf.d/這個目錄下不止一個.conf文件,一個是備份的舊文件,而且我的這個舊文件里面的虛擬機主機頭是ip的。下面貼出沖突的錯誤配置代碼:
server{ listen 80; #監聽的端口號 server_name xxx.xxx.xxx.xxx; #您的域名 location / { root /home/www/xxx.com; #站點的路徑 index index.php index.html index.htm; if (!-e $request_filename) { rewrite ^(.*)$ /index.php$1 last; } } location ~ ^.+\.php { root /home/www/xxx.com; #站點的路徑 fastcgi_pass 127.0.0.1:9000; #根據自己的 php-fpm 配置填寫 fastcgi_index index.php; ###配置支持pathinfo fastcgi_split_path_info ^((?U).+\.php)(/?.+)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
因為我是設置多域名了所以把這個原本的配置文件備份了,結果nginx.conf是加載我指定目錄下的所有.conf文件,把備份的舊的文件也讀取了。而舊文件server_name xxx.xxx.xxx.xxx; 寫的是ip所以導致沖突沒生效。
所以啊,遇上這種配置好了結果各種問題的要先檢查下自己的配置。有問題請留言評論!