nginx高級模塊有哪些

nginx高級模塊有哪些

nginx高級模塊

secure_link_module模塊

作用:用于校驗鏈接的真實性(md5)和有效時間(expires)

(學習視頻分享:java視頻教程

nginx配置

server?{ ????listen?7001; ????server_name?study; ????root?/home/jaryn/nginx_study/pic;  ????????location?/?{ ????????????????secure_link?$arg_md5,$arg_expires; ????????????????#md5生成方法和下面腳本一致,jaryn可以看成是服務端的“鹽值” ????????????????secure_link_md5?"$secure_link_expires$uri?jaryn";  ????????????????if?($secure_link?=?"")?{ ????????????????????????return?403; ????????????????} ????????????????if?($secure_link?=?"0")?{ ????????????????????????return?410; ????????????????} ????????} }

生成訪問鏈接的腳步 secure_link_module.sh

#!/bin/sh # servername="www.jaryn.cn:7001" download_file="/test.jepg" time_num=$(date?-d?"2018-9-9?00:00:00"?+%s) secret_num="jaryn"  #利用openssl生成鏈接中的md5參數 res=$(echo?-n?"${time_num}${download_file}?${secret_num}"|openssl?md5?-binary?|?openssl?base64?|?tr?+/?-_?|?tr?-d?=?) echo?"http://${servername}${download_file}?md5=${res}&expires=${time_num}"

執行腳本

[root@localhost?nginx_study]#?sh?secure_link_module.sh? http://www.jaryn.cn:7001/test.jepg?md5=MqtYCSugfDKmLiKuskPmuA&expires=1536422400

結果

生成的鏈接可以正常訪問,但是如果改變了md5的值或者過期時間,則會出現403。

http_geoip_module模塊

作用:基于ip地址匹配MaxMind GeoIP 二進制文件,讀取ip所在地地域信息。

  • 區別國內外做http訪問規則

  • 區別國內城市地域做http訪問規則

沒有模塊的安裝模塊

yum?install?nginx-module-geoip

如果提示沒有可用軟件包

nginx-module-geoip

需要更換下nginx的yum源

vim?/etc/yum.repos.d/nginx.repo

將以下內容copy進去

?[nginx] name=nginx?repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1

重新執行安裝

在/etc/nginx/modules下可以看到該模塊

nginx手動加載模塊

cd?/usr/share/nginx/modules/ vim?self.conf

文件內容如下

load_module?"/usr/lib64/nginx/modules/ngx_http_geoip_module.so";

下載geoip dat數據文件

地址如下

國家文件:http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz 城市文件:http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz

解壓相應文件

gunzip?GeoIP.dat.gz gunzip?GeoLiteCity.dat.gz

nginx配置

geoip_country?/home/jaryn/nginx_study/data/GeoIP.dat; geoip_city?/home/jaryn/nginx_study/data/GeoLiteCity.dat; server?{ ????listen?7001; ????server_name?study;  ????????location?/?{ ????????????????if?($geoip_country_code?!=?CN)?{ ????????????????????????return?403; ????????????????} ????????????????root?/home/project/nginx-code; ????????????????index?admin.html; ????????} ????????#通過訪問/myip可以獲取相應的ip和geo信息 ????????location?/myip?{ ????????????????default_type?text/plain; ????????????????return?200?"$remote_addr?$geoip_country_name?$geoip_country_code?$geoip_city"; ????????} }

錯誤

nginx:?[emerg]?module?"/usr/lib64/nginx/modules/ngx_http_geoip_module.so"?version?1012002?instead?of?1014000?in?/usr/share/nginx/modules/mod-http-geoip.conf:1

解決方法

?yum?remove?nginx-mod* ?yum?install?nginx-module-*

結論

通過配置。非中國ip的ip訪問就會返回403,只有中國的ip才能訪問。

https模塊(nginx ssl)

linux沒有openssl模塊的自己安裝openssl。

生成秘鑰和CA證書,需要http-ssl-module模塊

生成key秘鑰

#利用openssl生成  openssl?genrsa?-idea?-out?jaryn.key?1024

生成證書簽名請求文件(csr文件),生成證書簽名文件(CA文件)

#下面的命令需要根據提示輸入相應的信息,輸入即可  openssl?req?-new?-key?jaryn.key?-out?jaryn.csr  #打包成crt  openssl?x509?-req?-days?3650?-in?jaryn.csr?-signkey?jaryn.key?-out?jaryn.crt   #也可以直接用key生成crt文件,keyout會重新生成.key文件,重啟nginx的時候就不需要輸入密碼了  openssl?req?-days?36500?-x509?-sha256?-nodes?-newkey?rsa:2048?-keyout?jaryn.key??-out?jaryn_a.crt

nginx配置

????server?{ ????????listen?443; ????????server_name?studyssl;  ????????ssl?on; ????????ssl_certificate?/home/jaryn/nginx_study/ssl_key/jaryn.crt; ????????ssl_certificate_key?/home/jaryn/nginx_study/ssl_key/jaryn.key;  ????????index?admin.html; ????????location?/?{ ????????????????root??/home/project/nginx-code; ????????} ????}

訪問

`直接訪問你的地址,https默認443:https://192.168.1.10/admin.html`

https服務優化

激活keepalive長連接

設置ssl Session緩存

????server?{ ????????listen?443; ????????server_name?studyssl;  ????????ssl?on; ????????ssl_session_cache?shared:SSL:10m; ????????ssl_session_timeout?10m; ????????ssl_certificate?/home/jaryn/nginx_study/ssl_key/jaryn.crt; ????????ssl_certificate_key?/home/jaryn/nginx_study/ssl_key/jaryn.key;  ????????index?admin.html; ????????location?/?{ ????????????????root??/home/project/nginx-code; ????????} ????}

相關推薦:java視頻教程

以上就是

? 版權聲明
THE END
喜歡就支持一下吧
點贊8 分享