把文件中沒必要要的語句 過濾、刪除php
sed -i '/#/d' nginx.conf
sed -i '/^$/d' nginx.conf
能夠當即查看html文件裏的內容html
編譯以前檢查該配置文件是否有報錯node
../sbin/nginx -g nginx.conf
查找哪一個命令對應是安裝哪一個包:python
yum search 命令
echo aaaa > a/index.htmlnginx
echo bbbb > b/index.htmlweb
表示寫入'aaaa' 進 a文件目錄下的index.html文件chrome
通過命令能夠查看a目錄下的網頁輸出:json
elinks http:127.0.0.1/a --dumpvim
查看對應端口是否有應用在使用瀏覽器
lsof -i:端口
例如:lsof -i :80
從新讀取數據,至關於重啓
killall -s HUP nginx
①用戶登錄認證:
先安裝兩個包httpd-tools 和 openssl
yum -y install httpd-tools
rpm -qf 'which htpasswd' (該命令是查看哪個包提供了"htpasswd" 這個命令)
在根目錄創建一個文件夾nginx:
mkdir /etc/nginx
再創建一個文件
vim /etc/nginx/htpasswd
在htpasswd 裏寫入賬號和密碼,如賬號名:密碼 ---》 tang:123
可是這樣是不行的,因為密碼是明文沒有加密,因此須要使用命令講密碼"123" 加密後再寫入去
命令:htpasswd -m /etc/nginx/htpasswd tang_new
其中tang_new 為你的賬號名,之後連續輸入兩次密碼後,在htpasswd文件裏就會產生一個新的賬號與其對應加密的密碼,這時候再重啟nginx後再使用新的賬號和密碼登錄便可
可是在nginx.conf 配置文件裏,須要添加對應的文件驗證配置:
location /c { auth_basic "登錄驗證"; auth_basic_user_file /etc/nginx/htpasswd; }
②自定義log
在配置文件nginx.conf 裏有這一段代碼
log_format main '..........................';
其中,log_format 固定,main 為這個日誌的名稱,後面單引號裡面填寫的是你要再這個log裏你想輸出的內容
系統默認為:access_log logs/access.log main;
我們通常將日誌輸出為json格式,方便使用
log_format main_json '{"@timestamp":"$time_local",' '"client_ip": "$remote_addr",' '"request": "$request",' '"status": "$status",' '"bytes": "$body_bytes_sent",' '"x_forwarded": "$http_x_forwarded_for",' '"referer": "$http_referer"' '}'; access_log logs/access_json.log main_json;
③防盜鏈
放置用戶通過第三方訪問,如A(用戶) 是直接訪問了B,可是若是百度盜取了B的數據,如圖片,A能夠直接通過訪問百度來訪問該張圖片而不須要訪問B,這樣B的訪問量將會降低
location /images/ { alias /data/images/; valid_referers none blocked *.ayitula.com; #這些是一些匹配數據 if ($invalid_referer) { #只要滿足上面的其中一個,就會返回403 rewrite ^/ http://www.ayitula.com/daolian.gif; #return 403; } }
虛擬主機:就是把一臺物理服務器劃分紅多個「虛擬」 的服務器,每個虛擬主機均可以有獨
立的域名和獨立的目錄
①基於IP地址的設置
1.創建DocumentRoot
同時發佈兩個網站用:
DocumentRoot /usr/local/nginx/html/web1
DocumentRoot /usr/local/nginx/html/web2
2.設置有兩個IP地址
ifconfig eth0:1 172.168.1.1/24 up
3.設置兩個index.html 索引頁
最後須要在nginx.conf 配置文件中設置有兩個server
server { listen 192.168.10.42:80; location / { root html/web1; index index.html index.htm index.php; } }server { listen 192.168.10.52:80; location / { root html/web2; index index.html index.htm; } }
②基於端口不通:
需將配置文件中的listen改為不一樣的端口號便可
server { listen 80; #server_name www.abc.com; location / { root html/web1; index index.html index.htm index.php; } } server { listen 8080; #server_name www.abc.com; location / { root html/web2; index index.html index.htm; } }
③基於域名的虛擬主機
server { listen 80; server_name www.abc.com; location / { root html/web1; index index.html index.htm index.php; } } server { listen 80; server_name www.cbd.com; location / { root html/web2; index index.html index.htm; } }
反向代理
代理服務器,客戶機在發送請求時,不會直接發送給目的主機,而是先發送給代理
服務器,代理服務接受客戶機請求以後,再向主機發出,並接收目的主機返回的數
據,存放在代理服務器的硬盤中,再發送給客戶機。
基本設置:
client mac http://192.168.10.42 -----》本機
反代 Nginx 42 ------》代理機,端口爲42
業務機器 book.ayitula.com http://118.190.209.153:4000/ ------》業務機器
限速:
限流(rate limiting)是NGINX衆多特性中最有用的,也是常常容易被誤解和錯誤
配置的,特性之一。該特性能夠限制某個用戶在一個給定時間段內可以產生的HTTP
請求數。請求能夠簡單到就是一個對於主頁的GET請求或者一個登錄表格的POST
請求。
在配置文件nginx.conf 裏的http下 寫入
limit_req_zone $binary_remote_addr zone=baism:10m rate=1r/s;
第一個參數:$binary_remote_addr 表示經過remote_addr這個標識來作限制,
「binary_」 的目的是縮寫內存佔用量,是限制同一客戶端ip地址。
第二個參數:zone=baism:10m表示生成一個大小爲10M,名字爲baism的內存區域,
用來存儲訪問的頻次信息。
第三個參數:rate=1r/s表示容許相同標識的客戶端的訪問頻次,這裏限制的是每秒
1次,還能夠有好比30r/m的。
①訪問次數限制
更新server代碼:
server { location /abc {limit_req zone=baism burst=5 nodelay; }
PS:記住在http上要加上 上面說的哪一個語句,建立一個baism 的空間
②限制下載速度
更新http代碼
limit_conn_zone $binary_remote_addr zone=addr:10m;
更新server代碼
limit_conn addr 1; #限制下載人數爲1個鏈接數
limit_rate 100k; #限制下載速率爲100k
URL重寫:
即用戶訪問一個url時,對方會返回另一個url,讓用戶自動跳轉至另一個url去訪問
URL 模塊語法
1) set 設置變量
2) if 負責語句中的判斷
3) return 返回返回值或URL
4) break 終止後續的rewrite規則
5) rewrite 重定向URL
實現:在location裏面添加語句
set $name baism; rewrite ^(.*)$ http://www.ayitula.com/$name;
如上,當訪問根目錄時,會跳轉至
http://www.ayitula.com/$name
if 判斷指令:
location / { root html; index index.html index.htm; if ($http_user_agent ~* 'Chrome') { #判斷若是是用google瀏覽器訪問的,就會返回403 break; return 403; #return http://www.jd.com; } }
rewrite:
last #本條規則匹配完成後, 繼續向下匹配新的location URI規則
break #本條規則匹配完成即終⽌, 再也不匹配後⾯的任何規則
redirect #返回302臨時重定向, 瀏覽器地址會顯示跳轉後的URL地址
permanent #返回301永久重定向, 瀏覽器地址欄會顯示跳轉後的URL地址
location / { rewrite ^/$ http://www.jd.com permanent ; 301永久重定向 }
重定向其實對於用戶是看不見的,主要是對於搜索引擎的
last 的做用是匹配玩後,區別於break當即結束,而是會繼續向下匹配,匹配下一個server塊,從新location匹配,匹配不到10次後會500錯誤
if ($http_user_agent ~* 'chrome'){ rewrite ^(.*)$ /chrome/$1 last; #last 會從新繼續匹配,按照新的格式http://IP地址/chrome/$url 進行匹配,這樣就會走到下面的這個location裏面,當咱們輸入http://IP地址/b 時會自動跳轉爲http://IP地址/chrome/b 若此時有這個目錄則會顯示內容 } location /chrome { root html ; index index.html; } }
優化:
01 優化思路
本節內容
02 ⼯做進程優化
03 ⻓鏈接
04 壓縮優化
05 客戶端緩存優化