摘要:經(jīng)過認證之后沒有過期時間,直到該頁面關(guān)閉如果需要更多的控制,可以使用服務器基礎配置實例測試的訪問測試的訪問
Nginx服務器基礎配置指令 nginx.conf文件的結(jié)構(gòu)
Global: nginx運行相關(guān)
events: 與用戶的網(wǎng)絡連接相關(guān)
http
http Global: 代理,緩存,日志,以及第三方模塊的配置
server
server Global: 虛擬主機相關(guān)
location: 地址定向,數(shù)據(jù)緩存,應答控制,以及第三方模塊的配置
配置運行Nginx服務器用戶(組)所有的所有的所有的指令,都要以;結(jié)尾
user nobody nobody;
配置允許生成的worker process數(shù)worker_processes auto;
worker_processes 4;
這個數(shù)字,跟電腦CPU核數(shù)要保持一致
ganiks ? Nginx git:(master) ? grep ^proces /proc/cpuinfo processor : 0 processor : 1 processor : 2 processor : 3 ganiks ? Nginx git:(master) ? grep ^proces /proc/cpuinfo | wc -l 4配置Nginx進程PID存放路徑
pid logs/nginx.pid;
配置錯誤日志的存放路徑這里面保存的就是一個數(shù)字,nginx master 進程的進程號
error_log logs/error.log;
error_log logs/error.log error;
include mime.types;
include fastcgi_params;
include ../../conf/*.conf;
accept_mutex on;
設置是否允許同時接收多個網(wǎng)絡連接對多個nginx進程接收連接進行序列化,防止多個進程對連接的爭搶(驚群)
multi_accept off;
事件驅(qū)動模型的選擇use select|poll|kqueue|epoll|rtsig|/dev/poll|eventport
配置最大連接數(shù)這個重點,后面再看
worker_connections 512;
定義MIME-Typeinclude mime.types;
default_type application/octet-stream;
access_log logs/access.log main;
access_log off;
sendfile off;
sendfile on;
sendfile_max_chunk 128k;
nginx 每個worker process 每次調(diào)用 sendfile()傳輸?shù)臄?shù)據(jù)量的最大值
Refer:
Linux kenel sendfile 如何提升性能
nginx sendifle tcp_nopush tcp_nodelay參數(shù)解釋
配置連接超時時間與用戶建立連接后,Nginx可以保持這些連接一段時間, 默認 75s
下面的65s可以被Mozilla/Konqueror識別,是發(fā)給用戶端的頭部信息Keep-Alive值
keepalive_timeout 75s 65s;
單連接請求數(shù)上限和用戶端建立連接后,用戶通過此連接發(fā)送請求;這條指令用于設置請求的上限數(shù)
keepalive_requests 100;
配置網(wǎng)絡監(jiān)聽listen *:80 | *:8000; # 監(jiān)聽所有的80和8000端口
listen 192.168.1.10:8000;
listen 192.168.1.10;
listen 8000; # 等同于 listen *:8000;
listen 192.168.1.10 default_server backlog=511; # 該ip的連接請求默認由此虛擬主機處理;最多允許1024個網(wǎng)絡連接同時處于掛起狀態(tài)
server_name myserver.com www.myserver.com;
server_name .myserver.com www.myserver. myserver2.*; # 使用通配符
不允許的情況: server_name www.ab*d.com; # *只允許出現(xiàn)在www和com的位置
server_name ~^wwwd+.myserver.com$; # 使用正則
nginx的配置中,可以用正則的地方,都以~開頭
from Nginx~0.7.40 開始,server_name 中的正則支持 字符串捕獲功能(capture)
server_name ~^www.(.+).com$; # 當請求通過www.myserver.com請求時, myserver就被記錄到$1中, 在本server的上下文中就可以使用
如果一個名稱 被多個虛擬主機的 server_name 匹配成功, 那這個請求到底交給誰處理呢?看優(yōu)先級:
準確匹配到server_name
通配符在開始時匹配到server_name
通配符在結(jié)尾時匹配到server_name
正則表達式匹配server_name
先到先得
基于IP的虛擬主機配置基于IP的虛擬主機,需要將網(wǎng)卡設置為同時能夠監(jiān)聽多個IP地址
ifconfig # 查看到本機IP地址為 192.168.1.30 ifconfig eth1:0 192.168.1.31 netmask 255.255.255.0 up ifconfig eth1:1 192.168.1.32 netmask 255.255.255.0 up ifconfig # 這時就看到eth1增加來2個別名, eth1:0 eth1:1 # 如果需要機器重啟后仍保持這兩個虛擬的IP echo "ifconfig eth1:0 192.168.1.31 netmask 255.255.255.0 up" >> /etc/rc.local echo "ifconfig eth1:0 192.168.1.32 netmask 255.255.255.0 up" >> /etc/rc.local
再來配置基于IP的虛擬主機
http { ... server { listen 80; server_name 192.168.1.31; ... } server { listen 80; server_name 192.168.1.32; ... } }配置location塊(重中之重)
location 塊的配置,應該是最常用的了
location [ = | ~ | ~* | ^~ ] uri {...}
這里內(nèi)容分2塊,匹配方式和uri, 其中uri又分為 標準uri和正則uri
先不考慮 那4種匹配方式
Nginx首先會再server塊的多個location中搜索是否有標準uri和請求字符串匹配, 如果有,記錄匹配度最高的一個;
然后,再用location塊中的正則uri和請求字符串匹配, 當?shù)谝粋€正則uri匹配成功,即停止搜索, 并使用該location塊處理請求;
如果,所有的正則uri都匹配失敗,就使用剛記錄下的匹配度最高的一個標準uri處理請求
如果都失敗了,那就失敗嘍
再看4種匹配方式:
=: 用于標準uri前,要求請求字符串與其嚴格匹配,成功則立即處理
^~: 用于標準uri前,并要求一旦匹配到,立即處理,不再去匹配其他的那些個正則uri
~: 用于正則uri前,表示uri包含正則表達式, 并區(qū)分大小寫
~*: 用于正則uri前, 表示uri包含正則表達式, 不區(qū)分大小寫
配置請求的根目錄^~ 也是支持瀏覽器編碼過的URI的匹配的哦, 如 /html/%20/data 可以成功匹配 /html/ /data
Web服務器收到請求后,首先要在服務端指定的目錄中尋找請求資源
root /var/www;
更改location的URI除了使用root指明處理請求的根目錄,還可以使用alias 改變location收到的URI的請求路徑
location ~ ^/data/(.+.(htm|html))$ { alias /locatinotest1/other/$1; }設置網(wǎng)站的默認首頁
index 指令主要有2個作用:
對請求地址沒有指明首頁的,指定默認首頁
對一個請求,根據(jù)請求內(nèi)容而設置不同的首頁,如下:
location ~ ^/data/(.+)/web/$ { index index.$1.html index.htm; }設置網(wǎng)站的錯誤頁面
error_page 404 /404.html;
error_page 403 /forbidden.html;
error_page 404 =301 /404.html;
location /404.html { root /myserver/errorpages/; }基于IP配置Nginx的訪問權(quán)限
location / { deny 192.168.1.1; allow 192.168.1.0/24; allow 192.168.1.2/24; deny all; }
基于密碼配置Nginx的訪問權(quán)限從192.168.1.0的用戶時可以訪問的,因為解析到allow那一行之后就停止解析了
auth_basic "please login";
auth_basic_user_file /etc/nginx/conf/pass_file;
這里的file 必須使用絕對路徑,使用相對路徑無效
# /usr/local/apache2/bin/htpasswd -c -d pass_file user_name # 回車輸入密碼,-c 表示生成文件,-d 是以 crypt 加密。 name1:password1 name2:password2:comment
Nginx服務器基礎配置實例經(jīng)過basic auth認證之后沒有過期時間,直到該頁面關(guān)閉;
如果需要更多的控制,可以使用 HttpAuthDigestModule http://wiki.nginx.org/HttpAuthDigestModule
user ganiks ganiks; worker_processes 3; error_log logs/error.log; pid myweb/nginx.pid; events { use epoll; worker_connections 1024; } http { include mime.types; default_type applicatioin/octet-stream; sendfile on; keepalive_timeout 65; log_format access.log "$remote_addr [$time_local] "$request" "$http_user_agent""; server { listen 8081; server_name myServer1; access_log myweb/server1/log/access.log; error_page 404 /404.html; location /server1/location1 { root myweb; index index.svr1-loc1.htm; } location /server1/location2 { root myweb; index index.svr1-loc2.htm; } } server { listen 8082; server_name 192.168.0.254; auth_basic "please Login:"; auth_basic_user_file /home/ganiks/learn/nginx/Nginx/myweb/user_passwd; access_log myweb/server2/log/access.log; error_page 404 /404.html; location /server2/location1 { root myweb; index index.svr2-loc1.htm; } location /svr2/loc2 { alias myweb/server2/location2/; index index.svr2-loc2.htm; } location = /404.html { root myweb/; index 404.html; } } }
ganiks ? Nginx git:(master) ? ./sbin/nginx -c conf/nginx02.conf nginx: [warn] the "user" directive makes sense only if the master process runs with super-user privileges, ignored in /home/ganiks/learn/nginx/Nginx/conf/nginx02.conf:1 ganiks ? myweb git:(master) ? tree . . ├── 404.html ├── server1 │?? ├── location1 │?? │?? └── index.svr1-loc1.htm │?? ├── location2 │?? │?? └── index.svr1-loc2.htm │?? └── log │?? └── access.log └── server2 ├── location1 │?? └── index.svr2-loc1.htm ├── location2 │?? └── index.svr2-loc2.htm └── log └── access.log 8 directories, 7 files測試myServer1的訪問
http://myserver1:8081/server1/location1/ this is server1/location1/index.svr1-loc1.htm http://myserver1:8081/server1/location2/ this is server1/location1/index.svr1-loc2.htm測試myServer2的訪問
http://192.168.0.254:8082/server2/location1/ this is server2/location1/index.svr2-loc1.htm http://192.168.0.254:8082/svr2/loc2/ this is server2/location1/index.svr2-loc2.htm http://192.168.0.254:8082/server2/location2/ 404 404 404 404
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/39190.html
摘要:負責請求的全局配置,負責具體及其下具體的配置。運行狀態(tài)監(jiān)控使用模塊配置上下文配置實踐編輯配置如下增加一個配置這里寫這個校驗配置重載配置驗證結(jié)果隨機首頁使用模塊配置上下文配置實踐我們先在目錄下準備個頁面和以上個頁面,只是不同。 Nginx配置文件 nginx.conf是主配置文件,在文件尾通過include /etc/nginx/conf.d/*.conf引入了default.conf配...
摘要:所以到目前為止,基本可以肯定是的上出了一些問題。問題解決因篇幅有限,為了直面本次問題的核心,我不再貼出完整的配置,我簡化此次問題的模型。 這是五個小時與一個字符的戰(zhàn)斗 是的,作為一個程序員,你往往發(fā)現(xiàn),有的時候你花費了數(shù)小時,數(shù)天,甚至數(shù)星期來查找問題,但最終可能只花費了數(shù)秒,改動了數(shù)行,甚至幾個字符就解決了問題。這次給大家分享一個困擾了我很久,我花了五個小時才查找出問題原因...
摘要:它的作用是監(jiān)聽后建立的連接,對讀寫事件進行添加刪除。事件處理模型和的非阻塞模型結(jié)合在一起使用。 趁著爸媽做年夜飯之前,把之前做的筆記貼出來,新的一年到了,祝大家 showImg(https://segmentfault.com/img/remote/1460000018099635?w=251&h=201); Nginx + Node + Vue 部署初試 知乎 個人博客 Githu...
閱讀 3070·2021-11-22 13:54
閱讀 834·2021-11-04 16:08
閱讀 4463·2021-10-11 11:09
閱讀 3597·2021-09-22 16:05
閱讀 910·2019-08-30 15:54
閱讀 387·2019-08-30 15:44
閱讀 594·2019-08-30 14:05
閱讀 1014·2019-08-30 12:46