關於Nginx的好與壞,我以爲沒有必要去介紹了,在這裏主要分享一下我在實際的項目部署中是如何快速的調教Nginx的。其中分享的源碼你們能夠做爲模板代碼,根據自身項目的實際狀況,酌情使用。javascript
這裏簡單的說一說我爲何要寫這篇文章,網上有不少大而全的文章在介紹Nginx是什麼,如何入門等等,玩了不少的文字遊戲,反正我接觸Nginx的時候,去查閱文檔給個人是這種感受,大而全,可是很亂。這裏我要講的不是Nginx的理論知識,而是一些可以快速的應用到項目中的實際技巧。廢話就說這麼多,開始本次分享的主體。css
http:{ ... gzip on; gzip_min_length 10; gzip_comp_level 4; gzip_disable "MSIE [1-10] \."; gzip_types text/plain appliaton/x-javascript text/css application/xml image/jpeg image/gif image/png image/svg+xml; ... }
gzip on | 開啓gzip壓縮功能 |
---|---|
gzip_min_lenght 10 | 壓縮臨界值,大於10KB的文件才壓縮 |
gzip_com_level 4 | 設置壓縮級別[0-10],數字越大,壓縮比越好,但消耗的時間越長 |
gzip_desable "MSIE [1-10]." | 對IE瀏覽器不採用壓縮,[1-10]表示瀏覽器版本範圍 |
gzip_types | 須要進行文件壓縮的類型,根據自身狀況酌情添加 |
通常狀況下,關於gzip的配置,設置以上幾個參數就能夠了
server{ listen 80; server_name http://youdomain.com; return 301 http://www.youdomain.com$request_uri; }
針對本身的域名,配置一個全局的server,對裸域名的請求進行轉發,注意要加上「$request_uri」
網上有關這個問題提供了另一種解決辦法,代碼以下:html
server{ listen 80; server_name www.youdomain.com; if ( $host !='www.youdomain.com'){ rewrite ^/(.*)$ http://www.youdomain.com/$1 permanent; } rewrite ^/(.*)$ http://$host$1 permanent; }
我在本身的項目中使用第二種方式進行配置,貌似沒有生效,因此改成了第一種配置方式
關於如何配置server(http)這裏再也不介紹,網上相關文檔不少,這裏主要分享如何在Nginx中配置HTTPS,配置代碼以下:java
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; } }
這裏須要注意幾個地方:nginx
要實現https加密請求,還須要web容器的配合,在這裏以Apache Tomcat配置爲例進行介紹。web
在上一小節中,咱們對server的代理作了以下的配置:apache
server{ ... location /{ ... proxy_pass http://localhost:8080; ... } ... }
首先,咱們須要將tomcat的鏈接器(Connector)的端口設置爲8080,將轉發重定向的端口(redirectPort)和代理端口(proxyPort)設置爲443。具體的配置代碼以下:瀏覽器
... <Connector prot="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="443" proxyPort="443"/> ...
而後,須要在Host配置中設置remoteIpHeader、protocolHeader和protocolHeaderHttpsValue這三個屬性的值,詳細配置以下:緩存
... <Host name="localhost" appBase="webapps" ....> <Value className="org.apache.catalina.values.RemoteIpValue" remoteIpHeader="X-Forwarded-For" protocolHeader="X-Forwarded-Proto" protocolHeaderHttpsValue="https"/> ... ... <Context docBase="" path="" reloadable="false"></Context> </Host> ...
以上就是Nginx+tomcat的組合方式開啓https請求的調教過程。tomcat
本文是我在實際項目開發過程當中認爲比較經常使用其重要的幾個調教點技巧,但願本次分享可以幫到你。這次文章主要分享關於Nginx小而精的一些經常使用配置技巧,更多的配置如分佈式下一服多實例的配置我會單獨些一篇文章進行分享,今天的內容就到這裏結束了;再次感謝你的拜讀,拜拜~~