話不多說,先貼部分配置:

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訪問

80443 埠分別配置一個 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;
}

需要注意的是:if ( $host != www.your-domain.com ) { 這一句一定要按照格式書寫,括弧前後的空格必須帶著,還有if之後的空格也一樣。如果不!會報錯:

unknown directive "if($host!="

四、總結一下

  • 為什麼要用 https ?其實說白了,不是因為大家都用,所以我們也用。舉一個最簡單的例子 https 能防止網路運營商給你的頁面加東西,也能防止網路運營商窺探你的隱私。如果我們用 http ,網路運營商可以在你的頁面加廣告,可以把你的傳輸的網頁進行過濾,比如說正則匹配過濾你的電話號碼,郵箱,身份證號,等等個人信息。 再比如好多人用一些免費的科學上網工具,這些都是有風險的,你的數據流經過了第三方的伺服器,那麼他就有可能截留分析你的網頁信息。
  • 為什麼我們要非 www 跳轉到 www ?有助於你的網站的SEO和排名,要不信你試一試一些必須要注重SEO優化的網站類型,比如新聞資訊站這一類的,都會強制加上www。其實這個www是個遺留問題,本來已經沒啥用了,但是因為歷史已成定局,規則已經定下來,大家沒辦法,只有遵守了。本質上加上www和不加www 是兩個網站,搜索引擎統計的話會按照兩個域名來統計,而且發現爬這兩個網站的內容都是一個樣,這對你的SEO有致命問題,當然現在的話隨著搜索引擎的進化可能已經不存在這類問題了,但是不能不在意這些問題。
  • 為什麼要用 nginx 做為 Tomcat 的代理?一個是 nginx 性能好,而是可以做負載均衡,用戶增長後可以快速部署多個 Tomcat 分擔壓力。
  • 還要要開 GZIP 壓縮你的網頁,JS,CSS!作用很大的,減少傳輸數據量。

(寫著,寫著,變成怎麼做一個好站長了。)

推薦閱讀:

查看原文 >>
相關文章