Nginx常用的模組
ngx_http_access_module模組
ngx_http_auth_basic_module模組
ngx_http_stub_status_module模組
ngx_http_log_module模組
ngx_http_gzip_module模組
ngx_http_ssl_module模組
ngx_http_rewrite_module模組
ngx_http_referer_module模組
ngx_http_headers_module模組
ngx_http_access_module模組
這個模組只有2個指令
格式:
allow address | CIDR | unix: | all; #允許訪問
deny address | CIDR | unix: | all; #拒絕訪問
示例
location / {
root html;
index index.html index.htm;
allow 192.168.253.129; ##允許192.168.253.129訪問
deny 192.168.253.139; ##拒絕192.168.253.139訪問
}
ngx_http_auth_basic_module模組
實現基於使用者的訪問控制,使用basic機制進行使用者認證;
修改配置檔案
location / {
root html;
index index.html index.htm;
auth_basic "Admin"; ##認證對話方塊的提示字串顯示的內容
auth_basic_user_file /usr/local/nginx/conf/htpasswd; ##存放認證用的使用者名稱和檔案,需要用htpasswd命令生成
}
安裝一下htpasswd命令
yum install httpd-tools
生成nginx使用者和密碼檔案
[root@localhost nginx]# htpasswd -c /usr/local/nginx/conf/htpasswd nginx
New password:
Re-type new password:
Adding password for user nginx
重啟一下nginx然後訪問
nginx -s reload
然後用我們剛才設定的使用者密碼登陸就可以了
ngx_http_stub_status_module模組
這個模組主要是用來檢視http的狀態資訊的,使用方式直接在location裡面加stub_status;就可以了
示例
location /admin/ {
alias /var/www/html/;
stub_status;##重點是這一個指令
}
重新裝載一下配置檔案
nginx -s reload
接下來我們訪問網站
Active connections: 3
server accepts handled requests
16 16 54
Reading: 0 Writing: 1 Waiting: 2
- Active connections: 活動狀態的連線數;
- accepts:已經接受的客戶端請求的總數;
- handled:已經處理完成的客戶端請求的總數;
- requests:客戶端發來的總的請求數;
- Reading:處於讀取客戶端請求報文首部的連線的連線數;
- Writing:處於向客戶端傳送響應報文過程中的連線數;
- Waiting:處於等待客戶端發出請求的空閒連線數;
ngx_http_log_module模組
nginx日誌模組
幾個重要的指令
log_format name string …;
string可以使用nginx核心模組及其它模組內嵌的變數;access_log path [format [buffer=size] [gzip[=level]] [flush=time] [if=condition]];
access_log off;
訪問日誌檔案路徑,格式及相關的緩衝的配置;open_log_file_cache max=N [inactive=time] [min_uses=N] [valid=time];
open_log_file_cache off;
快取各日誌檔案相關的後設資料資訊;- max:快取的最大檔案描述符數量;
- min_uses:在inactive指定的時長內訪問大於等於此值方可被當作活動項;
- inactive:非活動時長;
- valid:驗正快取中各快取項是否為活動項的時間間隔;
ngx_http_gzip_module模組
壓縮模組,有利於傳輸資料的大小減少,但是cpu使用會變高。因為要對傳輸的資料進行壓縮。
1. gzip on | off;
開啟或關閉壓縮功能
2.gzip_comp_level level;
設定壓縮比,一般使用6
3. gzip_disable regex …;
對請求報文的“User-Agent”匹配成功的請求,不進行壓縮。
4. gzip_min_length length;
啟用壓縮功能的響應報文大小閾值;大於某個值才開啟壓縮功能
5. gzip_buffers number size;
支援實現壓縮功能時為其配置的緩衝區數量及每個快取區的大小;
6. gzip_proxied off | expired | no-cache | no-store | private | no_last_modified | no_etag | auth | any …;
nginx作為代理伺服器接收到從被代理伺服器傳送的響應報文後,在何種條件下啟用壓縮功能的;
- off:對代理的請求不啟用
- no-cache, no-store,private:表示從被代理伺服器收到的響應報文首部的Cache-Control的值為此三者中任何一個,則啟用壓縮功能;
- gzip_types mime-type …;
壓縮過濾器,僅對此處設定的MIME型別的內容啟用壓縮功能;
- gzip_types mime-type …;
示例:
gzip on;
gzip_comp_level 6;
gzip_min_length 64;
gzip_proxied any;
gzip_types text/xml text/css application/javascript;
ngx_http_ssl_module模組
設定https連線的模組
1. ssl on | off;
是否開啟ssl連線
2. ssl_certificate file;
當前虛擬主機使用PEM格式的證照檔案;
3. ssl_certificate_key file;
當前虛擬主機上與其證照匹配的私鑰檔案;
4. ssl_protocols [SSLv2] [SSLv3] [TLSv1] [TLSv1.1] [TLSv1.2];
支援ssl協議版本,預設為後三個;
5. ssl_session_cache off | none | [builtin[:size]] [shared:name:size];
builtin[:size]:使用OpenSSL內建的快取,此快取為每worker程式私有;
[shared:name:size]:在各worker之間使用一個共享的快取;
6. ssl_session_timeout time;
客戶端一側的連線可以複用ssl session cache中快取 的ssl引數的有效時長;
先自建一個CA,建立證照和私鑰檔案
(umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)
openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3655 #然後填寫相關資訊
mkdir -pv /etc/pki/CA/{certs,crl,newcerts}
touch /etc/pki/CA/{serial,index.txt}
echo 01 > /etc/pki/CA/serial
mkdir /usr/local/nginx/ssl
cd /usr/local/nginx/ssl
(umask 077; openssl genrsa -out /usr/local/nginx/ssl/ssl.key 2048)
openssl req -new -key /usr/local/nginx/ssl/ssl.key -out /usr/local/nginx/ssl/ssl.csr -days 365 ##填寫相關資訊。域名這裡設定為www.ice.com.
openssl ca -in /usr/local/nginx/ssl/ssl.csr -out /usr/local/nginx/ssl/ssl.crt
修改配置檔案/usr/local/nginx/conf/nginx.conf
配置示例:
server {
listen 443 ssl;
server_name www.ice.com;
root /var/www/html;
ssl on;
ssl_certificate /usr/local/nginx/ssl/ssl.crt;
ssl_certificate_key /usr/local/nginx/ssl/ssl.key;
ssl_session_cache shared:sslcache:20m;
location / {
index index.html index.htm;
}
}
配置完成之後我們需要設定一下域名解析
在這個目錄下C:\Windows\System32\drivers\etc
找到hosts檔案並修改
儲存退出
然後訪問一下
因為ca是自建的所以說不安全,我們在瀏覽器匯入ca的證照,就可以了 。
我們先吧虛擬機器的ca檔案複製到物理機
sz /etc/pki/CA/cacert.pem ##這個命令需要安裝 lrzsz 安裝方法 yum install lrzsz -y
匯入證照
然後再次訪問
這裡顯示安全連結了
ngx_http_rewrite_module模組
常用的幾個指令
1、rewrite regex replacement [flag]
將使用者請求的URI基於regex所描述的模式進行檢查,匹配到時將其替換為replacement指定的新的URI;
注意:如果在同一級配置塊中存在多個rewrite規則,那麼會自下而下逐個檢查;被某條件規則替換完成後,會重新一輪的替換檢查,因此,隱含有迴圈機制;[flag]所表示的標誌位用於控制此迴圈機制;
[flag]:
- last:如果規則有很多條。這裡重寫完成一次之後就會重新開始匹配規則,直至最後一條。也就是說。如果規則寫的不好很容易造成死迴圈,不停的重寫規則。
- break:重寫完成之後不再從頭再次匹配規則。直接跳出迴圈
- redirect:重寫完成後以臨時重定向方式直接返回重寫後生成的新URI給客戶端,由客戶端重新發起請求;不能以http://或https://開頭;
- permanent:重寫完成後以永久重定向方式直接返回重寫後生成的新URI給客戶端,由客戶端重新發起請求;
示例比如我們要將http請求重定向到https請求。我們可以在http的server裡面這樣寫裡面這樣寫
rewrite (.*)$ https://www.ice.com$1 break;
具體可以看官方文件
http://nginx.org/en/docs/http/ngx_http_rewrite_module.html#return
ngx_http_referer_module模組
可以基於這個模組做防盜鏈。Referer 是 HTTP 請求header 的一部分,當瀏覽器(或者模擬瀏覽器行為)向web 伺服器傳送請求的時候,頭資訊裡有包含 Referer 。比如我在www.google.com 裡有一個www.baidu.com 連結,那麼點選這個www.baidu.com ,它的header 資訊裡就有:
Referer=http://www.google.com
valid_referers none | blocked | server_names | string …;
定義referer首部的合法可用值;
- none:請求報文首部沒有referer首部;
- blocked:請求報文的referer首部沒有值;
- server_names:引數,其可以有值作為主機名或主機名模式;
- arbitrary_string:直接字串,但可使用*作萬用字元;
- regular expression:被指定的正規表示式模式匹配到的字串;要使用~打頭,例如 ~.*.ice.com;
配置示例:
valid_referers none block server_names *.ice.com ; #3設定有效的referers
if($invalid_referer) {
return 403; ##如果referer是不再我們定義的valid_referers列表中,則返回一個403拒絕訪問
}
ngx_http_headers_module模組
向由代理伺服器響應給客戶端的響應報文新增自定義首部,或修改指定首部的值;
1、add_header name value [always];
新增自定義首部;
add_header X-Via $server_addr;
add_header X-Accel $server_name;
2、expires [modified] time;
expires epoch | max | off;
用於定義Expire或Cache-Control首部的值;
測試:在location中加上add_header Test test; 在響應頭部增加一個Test首部。內容是test。然後重啟nginx,訪問測試一下
相關文章
- Nginx的Uwsgi模組Nginx
- Nginx的Uwsgi模組(部分模組指令)Nginx
- 常用的 nginx 命令Nginx
- 常用的Nginx重要模組有什麼?linux伺服器運維NginxLinux伺服器運維
- NGINX模組(一)Nginx
- NGINX模組(二)Nginx
- nginx的Split Clients模組薦Nginxclient
- 高效能Web伺服器Nginx的配置與部署研究(6)核心模組之主模組的測試常用指令...Web伺服器Nginx
- 高效能Web伺服器Nginx的配置與部署研究(9)核心模組之HTTP模組基本常用指令Web伺服器NginxHTTP
- Nginx 新增 lua 模組Nginx
- 為 Nginx 新增模組Nginx
- nginx模組開發Nginx
- nginx常用配置Nginx
- 高效能Web伺服器Nginx的配置與部署研究(7)核心模組之主模組的非測試常用指令...Web伺服器Nginx
- Nginx的Upload上傳模組Nginx
- Nginx安裝nginx-rtmp-module模組Nginx
- 常用模組-02
- saltstack常用模組
- nginx學習之模組Nginx
- nginx安裝echo模組Nginx
- nginx image_filter模組NginxFilter
- nginx加強安全模組Nginx
- re模組下的的常用方法
- nginx常用配置教程。Nginx
- nginx host常用配置Nginx
- Tengine新增nginx upstream模組的使用Nginx
- Nginx的ngx_http_fastcgi_module模組NginxHTTPAST
- Nginx 常用面試題-什麼是NginxNginx面試題
- 解剖Nginx·模組開發篇(1)跑起你的 Hello World 模組!Nginx
- 4.2(2)常用模組
- Python 常用模組Python
- ansible常用模組
- Nginx為已安裝nginx動態新增模組Nginx
- Nginx原始碼研究之nginx限流模組詳解Nginx原始碼
- nginx新增sticky cookie 分流模組NginxCookie
- Nginx 模組-細節詳探Nginx
- nginx 常用配置記錄Nginx
- nginx常用命令Nginx