最近全棧導航啓用了https,谷歌要求的是訪問http://xxxxx.com 也能訪問,也在網絡上找了下都不是很齊全,要麼報錯,要麼達不到要求,只有本身嘗動手嘗試了,而且成功記錄如下nginx配置完成目標html
目的須要將如下地址都統一跳轉到 https 的根域名 www.itnavs.comlinux
server {
# 80端口是http正常訪問的接口
listen 80;
server_name itnavs.com,www.itnavs.com;
return 301 https://www.itnavs.com$request_uri;
}
server {
listen 443;
server_name itnavs.com;
return 301 https://www.itnavs.com$request_uri;
}
server {
listen 443 default_server ssl;
server_name www.itnavs.com;
# 根據本身的域名加載證書以及證書相關協議套件配置
ssl_certificate_key 2_www.xxx.com.key;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; #協議配置
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;#套件配置
ssl_prefer_server_ciphers on;
#靜態文件緩存
location ~ .*\.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|svgz|mp4|ogg|ogv|webm)$
{
expires 360d;
}
# 其餘配置
}
複製代碼
其實上面配置也闊以這樣寫nginx
server {
# 80端口是http正常訪問的接口
listen 80;
server_name itnavs.com,www.itnavs.com;
rewrite ^(.*) https://$host$1 permanent; #這裏用的rewrite
}
複製代碼
先看一下rewrite的語法,rewrite regex replacement [flag]
rewrite: 該指令是實現URL重寫的指令 regex 用於匹配URI的正則表達式 replacement:將regex正則匹配到的內容替換成 replacement flag有以下值:web
301永久重定向能夠把搜索引擎的權重所有集中到https://www.itnavs.com
正則表達式
盜鏈能夠理解盜圖連接,也就是說把別人的圖片偷過來用在本身的服務器上,那麼防盜鏈能夠理解爲防止其餘人把個人圖片盜取過去。windows
使用http協議中請求頭部的Referer頭域來判斷當前訪問的網頁或文件的源地址。經過該頭域的值,咱們能夠檢測訪問目標資源的源地址。若是目標源地址不是咱們本身站內的URL的話,那麼這種狀況下,咱們採起阻止措施,實現防盜鏈。可是注意的是:Referer頭域中的值是能夠被更改的。所以該方法也不能徹底安全阻止防盜鏈。之間轉載過一篇是利用的服務端來實現的圖片防盜鏈的實現既然如此簡單瀏覽器
咱們設置valid_referers 指令後,會將其結果傳遞給一個變量invalid_referer將被設置爲1緩存
白名單就是隻容許白名單內的域名訪問,其他一概禁止安全
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico|webp)$ {
valid_referers none blocked *.abc.com *.def.com;
if ($invalid_referer) {
return 403;
}
}
複製代碼
上面的配置含義是先用location匹配出須要的格式(圖片和視頻),而後用valid_referers指令設置容許的域名,其它域名沒有包含在valid_referers列表中,$invalid_referer變量返回的值爲1,最終返回403,禁止訪問。以上就是防盜鏈白名單的設置bash
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico|webp)$ {
valid_referers *.baidu.com;
if ($invalid_referer = 0) {
return 403;
}
}
複製代碼
黑名單與白名單正好相反,就是隻禁止黑名單中的域名請求,其他一概放行,相比白名單,黑名單的限制更加寬鬆,上面的配置中咱們用valid_referers指令設置黑名單域名*.baidu.com,獲取到指定的Referer頭以後,$invalid_referer返回值爲0,最終返回403,禁止百度的域名來訪問
注意不要直接雙擊nginx.exe,這樣會致使修改配置後重啓、中止nginx無效,須要手動關閉任務管理器內的全部nginx進程 在nginx.exe目錄,打開命令行工具,用命令 啓動/關閉/重啓nginx
start nginx : 啓動nginx nginx -s reload :修改配置後從新加載生效 nginx -s reopen :從新打開日誌文件 nginx -t -c /path/to/nginx.conf 測試nginx配置文件是否正確
關閉nginx: nginx -s stop :快速中止nginx nginx -s quit :完整有序的中止nginx
遇到報錯: bash: nginx: command not found 有多是你再linux命令行環境下運行了windows命令 若是你以前是容許 nginx -s reload報錯, 試下 ./nginx -s reload