關(guān)于Nginx的好與壞,我覺得沒有必要去介紹了,在這里主要分享一下我在實際的項目部署中是如何快速的調(diào)教Nginx的。其中分享的源碼大家可以作為模板代碼,根據(jù)自身項目的實際情況,酌情使用。
這里簡單的說一說我為什么要寫這篇文章,網(wǎng)上有很多大而全的文章在介紹Nginx是什么,如何入門等等,玩了很多的文字游戲,反正我接觸Nginx的時候,去查閱文檔給我的是這種感覺,大而全,但是很亂。這里我要講的不是Nginx的理論知識,而是一些能夠快速的應(yīng)用到項目中的實際技巧。廢話就說這么多,開始本次分享的主體。
調(diào)教一:開啟GZIP,提高頁面加載速度
gzip on開啟gzip壓縮功能gzip_min_lenght 10壓縮臨界值,大于10KB的文件才壓縮gzip_com_level 4設(shè)置壓縮級別[0-10],數(shù)字越大,壓縮比越好,但消耗的時間越長gzip_desable 'MSIE [1-10].'對IE瀏覽器不采用壓縮,[1-10]表示瀏覽器版本范圍gzip_types需要進行文件壓縮的類型,根據(jù)自身情況酌情添加
一般情況下,關(guān)于gzip的配置,設(shè)置以上幾個參數(shù)就可以了
調(diào)教二:無www的域名跳轉(zhuǎn)到帶www的域名
server{ listen 80; server_name http://youdomain.com; return 301 http://www.youdomain.com$request_uri;}
針對自己的域名,配置一個全局的server,對裸域名的請求進行轉(zhuǎn)發(fā),注意要加上“$request_uri”
網(wǎng)上有關(guān)這個問題提供了另外一種解決辦法,代碼如下:
我在自己的項目中使用第二種方式進行配置,貌似沒有生效,所以改為了第一種配置方式
調(diào)教三:配置https
關(guān)于如何配置server(http)這里不再介紹,網(wǎng)上相關(guān)文檔很多,這里主要分享如何在Nginx中配置HTTPS,配置代碼如下:
server{ listen 443 ssl; server_name www.youdomain.com; access_log logs/com_youdomain_logs.log; ssl_certificate c:/sslfile/cert.crt; ssl_certificate_key c:/sslfile/cert.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; location /{ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto https; proxy_set_header X-real-IP $remote_addr; proxy_set_header X-Forwarded-proto $scheme; proxy_connect_timeout 240; proxy_send_timeout 240; proxy_read_timeout 240; proxy_pass http://localhost:8080; proxy_redirect ~^http://([^:]+)(:\d+)?(.*)$ https://$1$3; }}
這里需要注意幾個地方:
監(jiān)聽的端口由原來的80或者其他(通常是80端口)改為 443 ssl 。
ssl_certificate配置HTTPS證書放置的路徑,ssl_certificate_key 放置HTTPS證書的秘鑰路徑。
ssl_session_cache配置HTTPS的緩存,ssl_session_timeout配置HTTPS緩存的生命周期。
在location配置中,proxy_set_header部分的代碼是一個固定用法,不進行介紹。
proxy_connect_timeout,proxy_send_timeout和proxy_read_timeout主要配置在HTTPS下建立請求連接、發(fā)送數(shù)據(jù)和讀取數(shù)據(jù)的時間上線(超時處理)
proxy_pass設(shè)置Nginx需要代理的請求對象,如http://localhost:8080 ,這里需要web容器配置,在接下來會單獨介紹
proxy_redirect設(shè)置代理后的請求轉(zhuǎn)發(fā)重定向:~^http://([^:]+)(:\d+)?(.*)$ https://$1$3; 將http請求重定向到https上。
要實現(xiàn)https加密請求,還需要web容器的配合,在這里以Apache Tomcat配置為例進行介紹。
調(diào)教三:開啟tomcat對https請求的支持
在上一小節(jié)中,我們對server的代理做了如下的配置:
首先,我們需要將tomcat的連接器(Connector)的端口設(shè)置為8080,將轉(zhuǎn)發(fā)重定向的端口(redirectPort)和代理端口(proxyPort)設(shè)置為443。具體的配置代碼如下:
...<Connector prot='8080' protocol='HTTP/1.1' connectionTimeout='20000' redirectPort='443' proxyPort='443'/>...
然后,需要在Host配置中設(shè)置remoteIpHeader、protocolHeader和protocolHeaderHttpsValue這三個屬性的值,詳細(xì)配置如下:
以上就是就是Nginx+tomcat的組合方式開啟https請求的調(diào)教過程。
作者:譚朝紅
原文地址:https://www.ramostear.com/articles/nginx_quick_conf.html
結(jié)束語
以上就是我在實際項目開發(fā)過程中任務(wù)比較常用其重要的幾個調(diào)教點,希望本次分享能夠幫到你。此次文章主要分享關(guān)于Nginx小而精的一些常用配置技巧,更多的配置如分布式下一服多實例的配置我會單獨些一篇文章進行分享,今天的內(nèi)容就到這里結(jié)束了;再次感謝你的拜讀,拜拜~~