項目場景:
阿里云搭建的寶塔linux面板,上面已經(jīng)搭建過其它網(wǎng)站了,我現(xiàn)在給一個新增的網(wǎng)站增加一個反向代理端口,但是通過寶塔面板添加反向代理的時候,出現(xiàn)了下圖偽靜態(tài)的錯誤。
問題描述
偽靜態(tài)/nxinx主配置/vhost/文件已經(jīng)存在全局反向代理
這個問題是其實是告訴我們nginx配置文件里面一個網(wǎng)站只能包含一個location /,不然就會產(chǎn)生報錯了。
原因分析:
問題已經(jīng)非常清楚了,就是nginx.conf的相關(guān)配置出現(xiàn)問題。
第一步,查看網(wǎng)站的相關(guān)配置文件,直接點擊網(wǎng)站進入詳情就可以查看配置文件了。
server { ????listen?80; ????server_name?www.123456.com; ????index?index.php?index.html?index.htm?default.php?default.htm?default.html; ????root?/www/wwwroot/www.123456.com; ???? ????#SSL-START?SSL相關(guān)配置,請勿刪除或修改下一行帶注釋的404規(guī)則 ????#error_page?404/404.html; ????#SSL-END ???? ????#ERROR-PAGE-START??錯誤頁配置,可以注釋、刪除或修改 ????#error_page?404?/404.html; ????#error_page?502?/502.html; ????#ERROR-PAGE-END ???? ????#PHP-INFO-START??PHP引用配置,可以注釋或修改 ????include?enable-php-74.conf; ????#PHP-INFO-END ???? ????#REWRITE-START?URL重寫規(guī)則引用,修改后將導(dǎo)致面板設(shè)置的偽靜態(tài)規(guī)則失效 ????include?/www/server/panel/vhost/rewrite/www.123456.com.conf; ????#REWRITE-END ???? ????#禁止訪問的文件或目錄 ????location?~?^/(.user.ini|.htaccess|.git|.svn|.project|LICENSE|README.md) ????{ ????????return?404; ????} ???? ????#一鍵申請SSL證書驗證目錄相關(guān)設(shè)置 ????location?~?.well-known{ ????????allow?all; ????} ???? ????location?~?.*.(gif|jpg|jpeg|png|bmp|swf)$ ????{ ????????expires??????30d; ????????error_log?/dev/null; ????????access_log?/dev/null; ????} ???? ????location?~?.*.(js|css)?$ ????{ ????????expires??????12h; ????????error_log?/dev/null; ????????access_log?/dev/null;? ????} ????access_log??/www/wwwlogs/www.123456.com.log; ????error_log??/www/wwwlogs/www.123456.com.error.log; }
從這個配置頁面可以看出,沒有單獨的location /規(guī)則,而是添加了相關(guān)后綴的限制。但是可以看到上面還出現(xiàn)了一個? include /www/server/panel/vhost/rewrite/www.123456.com.conf 重寫的規(guī)則配置文件。
切換到這個目錄查看這個文件。
可以看到這個文件也是空的,沒有任何配置,有些問題可能是配置了下面的偽靜態(tài)規(guī)則,如果配置了的話,會顯示在那個rewrite文件夾下的配置文件里面的。
現(xiàn)在基本可以確定這個網(wǎng)站的配置,沒有偽靜態(tài)配置,也沒有其它單獨的location /配置。
那問題只能出在了nginx.conf原本的配置文件里面了,可以在下面的路徑查看nginx文件配置,如果你首頁添加了nginx的圖標(biāo),也可以直接點進去配置,也可以直接通過ssh軟件登錄然后直接修改文件。
查看這個nginx.conf配置文件
user??www?www; worker_processes?auto; error_log??/www/wwwlogs/nginx_error.log??crit; pid????????/www/server/nginx/logs/nginx.pid; worker_rlimit_nofile?51200; events ????{ ????????use?epoll; ????????worker_connections?51200; ????????multi_accept?on; ????} http ????{ ????????include???????mime.types; ????????#include?luawaf.conf; ????????include?proxy.conf; ????????default_type??application/octet-stream; ????????server_names_hash_bucket_size?512; ????????client_header_buffer_size?32k; ????????large_client_header_buffers?4?32k; ????????client_max_body_size?50m; ????????sendfile???on; ????????tcp_nopush?on; ????????keepalive_timeout?60; ????????tcp_nodelay?on; ????????fastcgi_connect_timeout?300; ????????fastcgi_send_timeout?300; ????????fastcgi_read_timeout?300; ????????fastcgi_buffer_size?64k; ????????fastcgi_buffers?4?64k; ????????fastcgi_busy_buffers_size?128k; ????????fastcgi_temp_file_write_size?256k; ????????fastcgi_intercept_errors?on; ????????gzip?on; ????????gzip_min_length??1k; ????????gzip_buffers?????4?16k; ????????gzip_http_version?1.1; ????????gzip_comp_level?2; ????????gzip_types?????text/plain?application/javascript?application/x-javascript?text/javascript?text/css?application/xml; ????????gzip_vary?on; ????????gzip_proxied???expired?no-cache?no-store?private?auth; ????????gzip_disable???"MSIE?[1-6]."; ????????limit_conn_zone?$binary_remote_addr?zone=perip:10m; ????????limit_conn_zone?$server_name?zone=perserver:10m; ????????server_tokens?off; ????????access_log?off; server ????{ ????????listen?888; ????????server_name?phpmyadmin; ????????index?index.html?index.htm?index.php; ????????root??/www/server/phpmyadmin; ????????location?~?/tmp/?{ ???????????????return?403; ??????????} ????????#error_page???404???/404.html; ????????include?enable-php.conf; ????????location?~?.*.(gif|jpg|jpeg|png|bmp|swf)$ ????????{ ????????????expires??????30d; ????????} ????????location?~?.*.(js|css)?$ ????????{ ????????????expires??????12h; ????????} ????????location?~?/. ????????{ ????????????deny?all; ????????} ???????? ????????location?/?{ ????????????if?(!-e?$request_filename){ ????????????????rewrite??^(.*)$??/index.php?s=$1??last;???break; ????????????} ????????} ????????access_log??/www/wwwlogs/access.log; ????} ????include?/www/server/panel/vhost/nginx/*.conf; }
可以看到,確實存在一個location /匹配規(guī)則, 雖然這個規(guī)則是屬于一個server:888端口下的配置,先刪除再說,然后下面還看到一個Include 文件夾。您可以在此文件夾中找到已通過寶塔面板配置的網(wǎng)站參數(shù)配置文件,無需進一步查閱。
刪除上面那個location /, 再去添加反向代理,這次添加直接成功了。
解決方案:
首先需要了解nginx.conf各個路徑的配置文件,這個問題涉及到三個路徑的配置文件。
第一個是網(wǎng)站的偽靜態(tài)重寫配置文件,在/www/server/panel/vhost/rewrite/ 路徑的文件夾下。
第二個是網(wǎng)站本身的配置文件,在/www/server/panel/vhost/nginx/ 路徑的文件夾下。
第三個最后一個是nginx.conf配置文件,這個一般都是在/www/server/nginx/conf/ 路徑下,然后查看每個配置是否存在location / 匹配規(guī)則,有的話需要刪除。
這次是因為nginx.conf文件下的server:888塊存在一個location / 匹配規(guī)則,把紅色部分刪除掉就行了。