當前位置:首頁 » 文件傳輸 » nginx訪問不到子路由
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

nginx訪問不到子路由

發布時間: 2022-09-18 02:42:05

① nginx怎麼讓thinkphp路由模式設置

首先THINKPHP配置文件中設置

//url訪問模式為rewrite模式
'URL_MODEL'=>'2',

然後再在nginx.conf文件中,找到這一條語句 #access_log logs/host.access.log main;
找到location /{}這個語句段落

location / {
index index.html index.htm index.php;
#如果請求既不是一個文件,也不是一個目錄,則執行一下重寫規則
if (!-e $request_filename)
{
#地址作為將參數rewrite到index.php上。
#rewrite ^/(.*)$ /index.php/$1;
#若是子目錄則使用下面這句,將subdir改成目錄名稱即可。
rewrite ^/company/(.*)$ /company/index.php/$1;
}
}
然後根據自己的路徑重啟nginx伺服器
# path/nginx -s reload你看過後很簡單吧以後不會可以向我一樣經常到後盾人平台找找相關教材看看就會了,希望能幫到你,給個採納吧謝謝\(^▽^)/!

② nginx反向代理帶路徑訪問問題

這個主要是要做一個反向代理,具體配置如下:


#upstream的配置
upstreamserver_A{
server192.168.0.55:8080;
}

upstreamserver_B{
192.168.0.206:8080;
}


#主機192.168.0.219的配置
server{
listen80default_server;
server_nameXX.com;
#server中的其它配置
#...

#如下值反向代理配置
if($request_uri~*"^/+$"){
proxy_passhttp://server_A;
break;
}

#其他的反向代理配置,通過uri的正則進行匹配
#if($request_uri~*"regex"){
#proxy_passhttp://server_B;
#break;
#}
}

#對應的server_A,server_B的機器的配置需要增加相應的路由規則。
#在server_A機器上增加路由規則。
location/{
rewrite"^/+bingo-szwf-sso"/path/of/phpbreak;
#...其他配置。
}

③ 連接路由器後不能用公網ip訪問nginx

從外網訪問內部網,需要NAT 網路埠映射 一般外網80埠是映到內網某機的80埠。
或者做整機的映射,全部埠映射到內部
還可以用DMZ方式,軍事緩沖區

調試的時候先用IP,OK了再調試動態域名。

④ nginx 路由配置

nginx中location對url匹配;

語法:location [=| | *|^~] /uri/ { … }

當匹配中符合條件的location,則執行內部指令;如果使用正則表達式,必須使用 *表明不區分大小寫或者 區分大小寫匹配;例如:location ~* .(gif|jpg|jpeg)$ ;當配皮成功後,將停止往下匹配;如果沒有找到,則使用常規自字元串處理結果;

如果不是用正則表達式;可使用=嚴格匹配;

如果使用^~前綴用於一個常規字元串;表示如果路徑匹配,則不測試正則表達式;

總結:指令按下列順序被接受

1:=前綴的指令嚴格匹配這個查詢;如果找到停止往下匹配

2:掙下的常規字元串,長的在前,如果這個匹配使用^~前綴,匹配停止;

3:正則表達式,按配置文件的順序;

4:如果第三步產生匹配。則使用這個結果;停止匹配;否則使用第二部的匹配結果;

四個案例:

八個location案例

當匹配成功後location中可以使用rewrite進行路由重寫;

首先需要了解nginx rewrite中可以使用到的全局變數;

$args:請求中get的參數,例如a=1&b=2;

$body_remote_add:二進制客戶地址

$body_byte_sent:相應時發送出去的body位元組數數量,即使鏈接中斷這個數據也是精確的;

$content_length:請求頭中的Content_length欄位

$content_type:請求中的Content_type欄位

$document_root:當前請求在root指令中的位置;伺服器中絕對路徑

$document_url:與uri相同

$host:請求主機頭欄位,否則為伺服器名稱;

$hostname:保存了當前請求中不包含指令的uri,例如: http://www.aaa.com/index.php?a=1 中的/index.php;

$host:請求的伺服器名稱;

$http_user_agent:客戶端瀏覽器的詳細信息,如果使用 chrome 和Firefox 則訪問結果是

location ~* .(gif|jpg|png|bmp) invalid_referer) {
return 403;
#rewrite ^/ http://www.aaa.com/1.jpg ;
}
}以上所有來至aaa.com和域名中包含google和的站點都可以訪問到當前站點的圖片,如果來源域名不在這個列表中,那麼$invalid_referer等於1,在if語句中返回一個403給用戶,這樣用戶便會看到一個403的頁面,如果使用下面的rewrite,那麼盜鏈的圖片都會顯示403.jpg。如果用戶直接在瀏覽器輸入你的圖片地址,那麼圖片顯示正常,因為它符合none這個規則.

location ~* .(gif|jpg|png|swf|flv) invalid_referer) {
return 404;
}
}

none:在瀏覽器輸入網站域名直接訪問的請求,需要允許訪問的
blocked:有referer首部,但是referer首部被清除了,一般是防火牆改過的請求
server_name:帶伺服器名稱的,一般是本機或其他伺服器的請求,a.com和*.a.com是本公司的域名,要允許訪問於是要先允許本機的訪問,再禁止其他伺服器的訪問

location /public/admin/images/y.jpg {
#valid_referers none blocked *.aaa.com server_names *.aaa.com ;
#valid_referers none blocked www.sss.com ; #設置只有該域> 名可以訪問
valid_referers none blocked 111.111.111.11; #設置只有該域名可以訪> 問
if ( request_uri?;
return 403;
rewrite ^/ http://www.aaa.com/1.jpg ;
}
}

. : 匹配除換行符以外的任意字元
? : 重復0次或1次

if ( /msie/$1 break;
}

if ( )") { # 如果cookie匹配正則,就設置變數 id id等於正則第一個括弧內匹配的部分
}

if ($request_method = POST) { #如果提交方法為POST,則返回狀態405(Method not allowed)。return不能返回301,302
return 405;
}

if ( slow可以通過 set 指令設置
limit_rate 10k;
}

if (!-f $request_filename){ #如果請求的文件名不存在,則反向代理到localhost 。這里的break也是停止rewrite檢查
break;
proxy_pass http://127.0.0.1;
}

if ($args ~ post=140){ #如果query string中包含"post=140",永久重定向到example.com
rewrite ^ http://example.com/ permanent;
}

http {
# 定義image日誌格式
log_format imagelog '[ image_file ' ' body_bytes_sent ' ' $status;
# 開啟重寫日誌
rewrite_log on;

}

⑤ nginx無法啟動,網站訪問不了,有什麼辦法

第一個辦法是更改系統的默認配置。打開注冊表regedit,HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\HTTP,在右邊找到Start這一項,將其改為0,重啟。
第二種做法就是更改Nginx的默認埠號,比如我們改成8088。然後再啟動Nginx,打開瀏覽器輸入localhost:8088就可以看到歡迎頁面了。

⑥ 虛擬機linux配置nginx 為什麼win7通過Ip訪問不到

第一步,你應該先檢查網路,
win機ping linux機,通了進行下一步。
第二步,檢查埠,
netstat -antl | grep 你開啟的服務埠,
比如你開了http,那就是80埠或者你自定義的埠,我就不多說了。
第三步,檢查防火牆,
service iptables stop,
可以直接先關掉防火牆看是不是能訪問了,如果可以,說明是防火牆屏蔽掉了,可以設備防火牆放行對應埠。

⑦ 系統是用安全證書nginx訪問的,別人現在想用ws訪問系統介面,訪問不到怎麼辦

一、網路設置的問題這種原因比較多出現在需要手動指定IP、網關、DNS伺服器聯網方式下,及使用代理伺服器上網的。仔細檢查計算機的網路設置。二、DNS伺服器的問題當IE無法瀏覽網頁時,可先嘗試用IP地址來訪問,如果可以訪問,那麼應該是DNS的問題,造成DNS的問題可能是連網時獲取DNS出錯或DNS伺服器本身問題,這時你可以手動指定DNS服務(地址可以是你當地ISP提供的DNS伺服器地址,也可以用其它地方可正常使用DNS伺服器地址。)在網路的屬性里進行,(控制面板—網路和拔號連接—本地連接—右鍵屬性—TCP/IP協議—屬性—使用下面的DNS伺服器地址)。不同的ISP有不同的DNS地址。有時候則是路由器或網卡的問題,無法與ISP的DNS服務連接,這種情況的話,可把路由器關一會再開,或者重新設置路由器。還有一種可能,是本地DNS緩存出現了問題。為了提高網站訪問速度,系統會自動將已經訪問過並獲取IP地址的網站存入本地的DNS緩存里,一旦再對這個網站進行訪問,則不再通過DNS伺服器而直接從本地DNS緩存取出該網站的IP地址進行訪問。所以,如果本地DNS緩存出現了問題,會導致網站無法訪問。可以在「運行」中執行ipconfig /flushdns來重建本地DNS緩存。三、IE瀏覽器本身的問題當IE瀏覽器本身出現故障時,自然會影響到瀏覽了;或者IE被惡意修改破壞也會導致無法瀏覽網頁。這時可以嘗試用「黃山IE修復專家」來修復(建議到安全模式下修復),或者重新IE(如重裝IE遇到無法重新的問題,可參考:附一解決無法重裝IE)四、網路防火牆的問題如果網路防火牆設置不當,如安全等級過高、不小心把IE放進了阻止訪問列表、錯誤的防火牆策略等,可嘗試檢查策略、降低防火牆安全等級或直接關掉試試是否恢復正常。五、網路協議和網卡驅動的問題IE無法瀏覽,有可能是網路協議(特別是TCP/IP協議)或網卡驅動損壞導致,可嘗試重新網卡驅動和網路協議。六、HOSTS文件的問題HOSTS文件被修改,也會導致瀏覽的不正常,解決方法當然是清空HOSTS文件里的內容。七、系統文件的問題當與IE有關的系統文件被更換或損壞時,會影響到IE正常的使用,這時可使用SFC命令修復一下,WIN98系統可在「運行」中執行SFC,然後執行掃描;WIN2000/XP/2003則在「運行」中執行sfc /scannow嘗試修復。其中當只有IE無法瀏覽網頁,而QQ可以上時,則往往由於winsock.dll、wsock32.dll或wsock.vxd(VXD只在WIN9X系統下存在)等文件損壞或丟失造成,Winsock是構成TCP/IP協議的重要組成部分,一般要重裝TCP/IP協議。但xp開始集成TCP/IP協議,所以不能像98那樣簡單卸載後重裝,可以使用 netsh 命令重置 TCP/IP協議,使其恢復到初次安裝操作系統時的狀態。具體操作如下:點擊「開始 運行」,在運行對話框中輸入「CMD」命令,彈出命令提示符窗口,接著輸入「netsh int ip reset c:\resetlog.txt」命令後會回車即可,其中「resetlog.txt」文件是用來記錄命令執行結果的日誌文件,該參數選項必須指定,這里指定的日誌文件的完整路徑是「c:\resetlog.txt」。執行此命令後的結果與刪除並重新安裝 TCP/IP 協議的效果相同。小提示:netsh命令是一個基於命令行的腳本編寫工具,你可以使用此命令配置和監視Windows 系統,此外它還提供了互動式網路外殼程序介面,netsh命令的使用格式請參看幫助文件(在令提示符窗口中輸入「netsh/?」即可)。第二個解決方法是修復以上文件,WIN9X使用SFC重新提取以上文件,WIN2000/XP/2003使用sfc /scannow命令修復文件,當用sfc /scannow無法修復時,可試試網上發布的專門針對這個問題的修復工具WinSockFix,可以在網上搜索下載。八、殺毒軟體的實時監控問題這倒不是經常見,但有時的確跟實時監控有關,因為現在殺毒軟體的實時監控都添加了對網頁內容的監控。舉一個實例:KV2005就會在個別的機子上會導致 IE無法瀏覽網頁(不少朋友遇到過),其具體表現是只要打開網頁監控,一開機上網大約20來分鍾後,IE就會無法瀏覽網頁了,這時如果把KV2005的網頁監控關掉,就一切恢復正常;經過徹底地重裝KV2005也無法解決。雖然並不是安裝KV2005的每台機子都會出現這種問題,畢竟每台機子的系統有差異,安裝的程序也不一樣。但如果出現IE無法瀏覽網頁時,也要注意檢查一下殺毒軟體。九、Application Management服務的問題出現只能上QQ不能開網頁的情況,重新啟動後就好了。不過就算重新啟動,開7到8個網頁後又不能開網頁了,只能上QQ。有時電信往往會讓你禁用Application Management服務,就能解決了。具體原因不明。十、感染了病毒所致這種情況往往表現在打開IE時,在IE界面的左下框里提示:正在打開網頁,但老半天沒響應。在任務管理器里查看進程,(進入方法,把滑鼠放在任務欄上,按右鍵—任務管理器—進程)看看CPU的佔用率如何,如果是100%,可以肯定,是感染了病毒,這時你想運行其他程序簡直就是受罪。這就要查查是哪個進程貪婪地佔用了CPU資源.找到後,最好把名稱記錄下來,然後點擊結束,如果不能結束,則要啟動到安全模式下把該東東刪除,還要進入注冊表裡,(方法:開始— 運行,輸入regedit)在注冊表對話框里,點編輯—查找,輸入那個程序名,找到後,點滑鼠右鍵刪除,然後再進行幾次的搜索,往往能徹底刪除干凈。有很多的病毒,殺毒軟體無能為力時,唯一的方法就是手動刪除。十一、無法打開二級鏈接還有一種現象也需特別留意:就是能打開網站的首頁,但不能打開二級鏈接,如果是這樣,處理的方法是重新注冊如下的DLL文件:在開始—運行里輸入:regsvr32 Shdocvw.dllregsvr32 Shell32.dll(注意這個命令,先不用輸)regsvr32 Oleaut32.dllregsvr32 Actxprxy.dllregsvr32 Mshtml.dllregsvr32 Urlmon.dllregsvr32 Msjava.dllregsvr32 Browseui.dll注意:每輸入一條,按回車。第二個命令可以先不用輸,輸完這些命令後重新啟動windows,如果發現無效,再重新輸入一遍,這次輸入第二個命令

⑧ nginx訪問不了根目錄下的文件怎麼解決

看看你的目錄有沒有許可權

⑨ centos 安裝完Nginx後,為什麼訪問不了

【解決方法】

  • 首先看看是不是防火牆開啟了;

本地試下埠是否可訪問telnet 192.168.4.155 80;

CentOS 7默認使用的是firewall作為防火牆,這里改為iptables防火牆。

firewall:
systemctl start firewalld.service#啟動firewall
systemctl stop firewalld.service#停止firewall
systemctl disable firewalld.service#禁止firewall開機啟動

在centos下嘗試使用$curl http://127.0.0.1命令訪問nginx。確定是否可以訪問。

⑩ PHPCMS換到nginx環境下後配置的url路由不生效,apache環境下訪問正常。

伺服器方面,如果你自己設定了url偽靜態規則,請在nginx中重新配置你的偽靜態規則。因為兩個伺服器的配置方法不一樣,在apache下可用在nginx下就不一定可用。
另外,phpcms系統方面,請確保在後頭修改url規則後已在後台-內容-更新url地址欄目下更新了所有頁面的url規則,否則也可能還是使用原來的url。