我的 Nginx 配置,域名不帶 www 跳轉到www,http 強制跳轉 https,這些都有了
話不多說,先貼部分配置:
server {
listen 80;
server_name www.your-domain.com;
rewrite ^(.*)$ https://www.your-domain.com$1 permanent;
}
server {
listen 443 ssl;
server_name www.your-domain.com;
ssl_certificate /home/ssl_certificate/your-domain.com.pem;
ssl_certificate_key /home/ssl_certificate/your-domain.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_session_timeout 5m;
if ( $host != www.your-domain.com ) {
rewrite ^(.*)$ https://www.your-domain.com$1 permanent;
}
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
# server_name _;
location / {
proxy_pass http://127.0.0.1:8080;
}
}
一、https
配置
server {
# 我們都知道(我們都應該知道),443是 https 的默認埠
listen 443 ssl;
server_name www.your-domain.com;
# 你要有證書,才能 https,免費申請一個吧,七牛雲,阿里雲都有免費一年的證書
ssl_certificate /home/ssl_certificate/your-domain.com.pem;
ssl_certificate_key /home/ssl_certificate/your-domain.com.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_session_timeout 5m;
# 下面這句就是當識別到 HOST 不是帶 www 的全部都 301 帶上 www
if ( $host != www.your-domain.com ) {
rewrite ^(.*)$ https://www.your-domain.com$1 permanent;
}
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
# server_name _;
location / {
# 我是 java web 所以用了 Tomcat ,但是我要用 nginx 做轉發,因此有了如下的配置
proxy_pass http://127.0.0.1:8080;
}
}
二、將http
強製為https
訪問
將 80
與 443
埠分別配置一個 server
,讓80
埠訪問的強制 301
跳轉到 https
。如下所示:
把所攜帶的參數都帶上
rewrite ^(.*)$ https://www.your-domain.com$1 permanent;
}
三、將不帶www
的訪問強制加上www
nginx
的配置文件可以寫這種判斷和表達式,總之是很厲害的,仔細觀察下面的 if
判斷很容易明白講的什麼意思,當 HOST
不是帶 www
的訪問時 302 到 www
上面。
# 下面這句就是當識別到 HOST 不是帶 www 的全部都 302 帶上 www
if ( $host != www.your-domain.com ) {
rewrite ^(.*)$ https://www.your-domain.com$1 permanent;
}
需要注意的是:
unknown directive "if($host!="if ( $host != www.your-domain.com ) {
這一句一定要按照格式書寫,括弧前後的空格必須帶著,還有if
之後的空格也一樣。如果不!會報錯:
四、總結一下
- 為什麼要用
https
?其實說白了,不是因為大家都用,所以我們也用。舉一個最簡單的例子https
能防止網路運營商給你的頁面加東西,也能防止網路運營商窺探你的隱私。如果我們用http
,網路運營商可以在你的頁面加廣告,可以把你的傳輸的網頁進行過濾,比如說正則匹配過濾你的電話號碼,郵箱,身份證號,等等個人信息。 再比如好多人用一些免費的科學上網工具,這些都是有風險的,你的數據流經過了第三方的伺服器,那麼他就有可能截留分析你的網頁信息。 - 為什麼我們要非
www
跳轉到www
?有助於你的網站的SEO和排名,要不信你試一試一些必須要注重SEO優化的網站類型,比如新聞資訊站這一類的,都會強制加上www
。其實這個www
是個遺留問題,本來已經沒啥用了,但是因為歷史已成定局,規則已經定下來,大家沒辦法,只有遵守了。本質上加上www
和不加www
是兩個網站,搜索引擎統計的話會按照兩個域名來統計,而且發現爬這兩個網站的內容都是一個樣,這對你的SEO有致命問題,當然現在的話隨著搜索引擎的進化可能已經不存在這類問題了,但是不能不在意這些問題。 - 為什麼要用
nginx
做為Tomcat
的代理?一個是nginx
性能好,而是可以做負載均衡,用戶增長後可以快速部署多個Tomcat
分擔壓力。 - 還要要開
GZIP
壓縮你的網頁,JS,CSS!作用很大的,減少傳輸數據量。
(寫著,寫著,變成怎麼做一個好站長了。)
推薦閱讀: