詳解nginx.conf 中 root 目錄設(shè)置問(wèn)題
在配置 nginx.conf 總會(huì)遇到一些問(wèn)題,下面列舉一些常見(jiàn)的問(wèn)題并說(shuō)明如何解決
1、相對(duì)路徑的問(wèn)題
例如配置文件中 location 設(shè)置
location ~ .php${ root html }
location 中root所指向的html是一個(gè)相對(duì)路徑,相對(duì)的是這個(gè)配置文件的路徑,假設(shè)此配置文件的位置是/etc/nginx/conf.d,那么這個(gè)html的絕對(duì)路徑就是/etc/nginx/conf.d/html。因此為避免出現(xiàn)不必要的麻煩,在配置root路徑的過(guò)程中最好用絕對(duì)路徑。
2、路徑的繼承問(wèn)題
2.1 第一種情況
假如server 中聲明:
root /usr/share;
且 location 中聲明:
location /{ root /usr/html/www }
此時(shí)會(huì)優(yōu)先使用 location 中的路徑
2.2 第二種情況
假如 location 中未對(duì)root路徑進(jìn)行聲明:
location /app { }
則默認(rèn)使用 location 外的 root 聲明的路徑
3、首頁(yè)的設(shè)置問(wèn)題
假如我們?cè)诼暶鱯erver 中聲明:
index index.html index.php
那么我們此時(shí)請(qǐng)求 / 就會(huì)在內(nèi)部重定向到 url/index.php 或者 url/index.html
然后再由相關(guān)的location 進(jìn)行匹配 之后再進(jìn)行解析
nginx.conf文件的詳解
官網(wǎng)對(duì)各個(gè)模塊參數(shù)配置的解釋說(shuō)明網(wǎng)址: Nginx中文文檔
##代碼塊中的events、http、server、location、upstream等都是塊配置項(xiàng)## ##塊配置項(xiàng)可以嵌套。內(nèi)層塊直接繼承外層快,例如:server塊里的任意配置都是基于http塊里的已有配置的## ##Nginx worker進(jìn)程運(yùn)行的用戶及用戶組 #語(yǔ)法:user username[groupname] 默認(rèn):user nobody nobody #user用于設(shè)置master進(jìn)程啟動(dòng)后,fork出的worker進(jìn)程運(yùn)行在那個(gè)用戶和用戶組下。當(dāng)按照"user username;"設(shè)置時(shí),用戶組名與用戶名相同。 #若用戶在configure命令執(zhí)行時(shí),使用了參數(shù)--user=usergroup 和 --group=groupname,此時(shí)nginx.conf將使用參數(shù)中指定的用戶和用戶組。 #user nobody; ##Nginx worker進(jìn)程個(gè)數(shù):其數(shù)量直接影響性能。 #每個(gè)worker進(jìn)程都是單線程的進(jìn)程,他們會(huì)調(diào)用各個(gè)模塊以實(shí)現(xiàn)多種多樣的功能。如果這些模塊不會(huì)出現(xiàn)阻塞式的調(diào)用,那么,有多少CPU內(nèi)核就應(yīng)該配置多少個(gè)進(jìn)程,反之,有可能出現(xiàn)阻塞式調(diào)用,那么,需要配置稍多一些的worker進(jìn)程。 worker_processes 1; ##ssl硬件加速。 #用戶可以用OpneSSL提供的命令來(lái)查看是否有ssl硬件加速設(shè)備:openssl engine -t #ssl_engine device; ##守護(hù)進(jìn)程(daemon)。是脫離終端在后臺(tái)允許的進(jìn)程。它脫離終端是為了避免進(jìn)程執(zhí)行過(guò)程中的信息在任何終端上顯示。這樣一來(lái),進(jìn)程也不會(huì)被任何終端所產(chǎn)生的信息所打斷。## ##關(guān)閉守護(hù)進(jìn)程的模式,之所以提供這種模式,是為了放便跟蹤調(diào)試nginx,畢竟用gdb調(diào)試進(jìn)程時(shí)最繁瑣的就是如何繼續(xù)跟進(jìn)fork出的子進(jìn)程了。## ##如果用off關(guān)閉了master_proccess方式,就不會(huì)fork出worker子進(jìn)程來(lái)處理請(qǐng)求,而是用master進(jìn)程自身來(lái)處理請(qǐng)求 #daemon off; #查看是否以守護(hù)進(jìn)程的方式運(yùn)行Nginx 默認(rèn)是on #master_process off; #是否以master/worker方式工作 默認(rèn)是on ##error日志的設(shè)置# #語(yǔ)法: error_log /path/file level; #默認(rèn): error_log / log/error.log error; #當(dāng)path/file 的值為 /dev/null時(shí),這樣就不會(huì)輸出任何日志了,這也是關(guān)閉error日志的唯一手段; #leve的取值范圍是debug、info、notice、warn、error、crit、alert、emerg從左至右級(jí)別依次增大。 #當(dāng)level的級(jí)別為error時(shí),error、crit、alert、emerg級(jí)別的日志就都會(huì)輸出。大于等于該級(jí)別會(huì)輸出,小于該級(jí)別的不會(huì)輸出。 #如果設(shè)定的日志級(jí)別是debug,則會(huì)輸出所有的日志,這一數(shù)據(jù)量會(huì)很大,需要預(yù)先確保/path/file所在的磁盤有足夠的磁盤空間。級(jí)別設(shè)定到debug,必須在configure時(shí)加入 --with-debug配置項(xiàng)。 #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; ##pid文件(master進(jìn)程ID的pid文件存放路徑)的路徑 #pid logs/nginx.pid; events { #僅對(duì)指定的客戶端輸出debug級(jí)別的日志: 語(yǔ)法:debug_connection[IP|CIDR] #這個(gè)設(shè)置項(xiàng)實(shí)際上屬于事件類配置,因此必須放在events{……}中才會(huì)生效。它的值可以是IP地址或者是CIRD地址。 #debug_connection 10.224.66.14; #或是debug_connection 10.224.57.0/24 #這樣,僅僅以上IP地址的請(qǐng)求才會(huì)輸出debug級(jí)別的日志,其他請(qǐng)求仍然沿用error_log中配置的日志級(jí)別。 #注意:在使用debug_connection前,需確保在執(zhí)行configure時(shí)已經(jīng)加入了--with-debug參數(shù),否則不會(huì)生效。 worker_connections 1024; } ##核心轉(zhuǎn)儲(chǔ)(coredump):在Linux系統(tǒng)中,當(dāng)進(jìn)程發(fā)生錯(cuò)誤或收到信號(hào)而終止時(shí),系統(tǒng)會(huì)將進(jìn)程執(zhí)行時(shí)的內(nèi)存內(nèi)容(核心映像)寫入一個(gè)文件(core文件),以作為調(diào)試只用,這就是所謂的核心轉(zhuǎn)儲(chǔ)(coredump). http { ##嵌入其他配置文件 語(yǔ)法:include /path/file #參數(shù)既可以是絕對(duì)路徑也可以是相對(duì)路徑(相對(duì)于Nginx的配置目錄,即nginx.conf所在的目錄) include mime.types; default_type application/octet-stream; #log_format main '$remote_addr - $remote_user [$time_local] "$request" ' # '$status $body_bytes_sent "$http_referer" ' # '"$http_user_agent" "$http_x_forwarded_for"'; #access_log logs/access.log main; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; #gzip on; server { ##listen監(jiān)聽(tīng)的端口 #語(yǔ)法:listen address:port [ default(deprecated in 0.8.21) | default_server | [ backlog=num | rcvbuf=size | sndbuf=size | accept_filter=filter | deferred | bind | ssl ] ] #default_server: 如果沒(méi)有設(shè)置這個(gè)參數(shù),那么將會(huì)以在nginx.conf中找到的第一個(gè)server塊作為默認(rèn)server塊 listen 8080; #主機(jī)名稱:其后可以跟多個(gè)主機(jī)名稱,開(kāi)始處理一個(gè)HTTP請(qǐng)求時(shí),nginx會(huì)取出header頭中的Host,與每個(gè)server中的server_name進(jìn)行匹配,以此決定到底由那一個(gè)server來(lái)處理這個(gè)請(qǐng)求。有可能一個(gè)Host與多個(gè)server塊中的server_name都匹配,這時(shí)會(huì)根據(jù)匹配優(yōu)先級(jí)來(lái)選擇實(shí)際處理的server塊。server_name與Host的匹配優(yōu)先級(jí)見(jiàn)文末。 server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; #location / { # root html; # index index.html index.htm; #} ##location 語(yǔ)法: location [=|~|~*|^~] /uri/ { ... } # location的使用實(shí)例見(jiàn)文末。 #注意:location時(shí)有順序的,當(dāng)一個(gè)請(qǐng)求有可能匹配多個(gè)location時(shí),實(shí)際上這個(gè)請(qǐng)求會(huì)被第一個(gè)location處理。 location / { proxy_pass http://192.168.1.60; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} } # another virtual host using mix of IP-, name-, and port-based configuration # #server { # listen 8000; # listen somename:8080; # server_name somename alias another.alias; # location / { # root html; # index index.html index.htm; # } #} # HTTPS server # #server { # listen 443 ssl; # server_name localhost; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # ssl_session_cache shared:SSL:1m; # ssl_session_timeout 5m; # ssl_ciphers HIGH:!aNULL:!MD5; # ssl_prefer_server_ciphers on; # location / { # root html; # index index.html index.htm; # } #} }
到此這篇關(guān)于詳解nginx.conf 中 root 目錄設(shè)置問(wèn)題的文章就介紹到這了,更多相關(guān)nginx.conf root 目錄內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- 借用nginx.vim工具進(jìn)行語(yǔ)法高亮和格式化配置nginx.conf文件
- Nginx服務(wù)器配置HTTPS nginx.config 配置文件(教程)
- ThinkPHP 在阿里云上的nginx.config配置實(shí)例詳解
- Nginx配置文件nginx.conf詳細(xì)說(shuō)明
- Nginx配置文件(nginx.conf)配置詳解(總結(jié))
- 詳解Nginx服務(wù)器中的nginx.conf配置文件
- Nginx配置文件nginx.conf的常用配置方法
- 比較完整的Nginx配置文件nginx.conf常用參數(shù)中文詳解
- Nginx的nginx.conf配置文件中文注釋說(shuō)明
- nginx配置文件nginx.conf中文注釋說(shuō)明
相關(guān)文章
Nginx跨域訪問(wèn)場(chǎng)景配置和防盜鏈詳解
這篇文章主要介紹了Nginx跨域訪問(wèn)場(chǎng)景配置和防盜鏈詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07nginx代理postgresql的實(shí)現(xiàn)示例
本文主要介紹了nginx代理postgresql的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-10-10Nginx 負(fù)載均衡算法及故障轉(zhuǎn)移解析
這篇文章主要介紹了Nginx 負(fù)載均衡算法及故障轉(zhuǎn)移解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09Nginx如何配置多個(gè)服務(wù)域名解析共用80端口詳解
對(duì)于Web而已,80端口和443端口是十分重要的,下面這篇文章主要給大家介紹了關(guān)于Nginx如何配置多個(gè)服務(wù)域名解析共用80端口的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09503 service unavailable錯(cuò)誤解決方案講解
這篇文章主要介紹了503 service unavailable錯(cuò)誤解決方案講解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08Nginx服務(wù)器實(shí)現(xiàn)通過(guò)ip和user_gent限制訪問(wèn)的方法分析
這篇文章主要介紹了Nginx服務(wù)器實(shí)現(xiàn)通過(guò)ip和user_gent限制訪問(wèn)的方法,結(jié)合實(shí)例形式分析了Nginx通過(guò)限制ip和user_gent限制訪問(wèn)來(lái)過(guò)濾DDOS攻擊的相關(guān)操作技巧,需要的朋友可以參考下2019-07-07windows下nginx服務(wù)關(guān)不掉問(wèn)題解決
這篇文章主要給大家介紹了關(guān)于windows下nginx服務(wù)關(guān)不掉問(wèn)題解決的相關(guān)資料,nginx是一種網(wǎng)絡(luò)服務(wù)器,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-08-08