nginx 加上ssl配置


#user  nobody;javascript

#雙核2個進程
#worker_processes  2;
#worker_cpu_affinity 01 10; php

#8核開啓8個進程
worker_processes 8; 
worker_cpu_affinity 10000000 01000000 00100000 00010000 00001000 00000100 00000010 00000001; css


error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;html

pid        logs/nginx.pid;java

# 每進程最大可打開文件描述符數量(linux上文件描述符比較廣義,網絡端口、設備、磁盤文件都是)
# 文件描述符用完了,新的鏈接會被拒絕,產生502類錯誤
# linux最大可打開文件數可經過ulimit -n FILECNT或 /etc/security/limits.conf配置
# 理論值 系統最大數量 / 進程數。但進程間工做量並非平均分配的,因此能夠設置的大一些
#設置了這個後,修改worker_connections值時,是不能超過worker_rlimit_nofile的這個值。
worker_rlimit_nofile 65000; linux

events {nginx

   #使用最高效的IO模式
    use epoll;
   
    #單個進程最大鏈接數
    # 併發響應能力的關鍵配置值
    # 每一個進程容許的最大同時鏈接數,work_connectins * worker_processes = maxConnection;
    # 要注意maxConnections不等同於可響應的用戶數量,
    # 由於通常一個瀏覽器會同時開兩條鏈接,若是反向代理,nginx到後端服務器的鏈接也要佔用鏈接數
    # 因此,作靜態服務器時,通常 maxClient = work_connectins * worker_processes / 2
    # 作反向代理服務器時 maxClient = work_connectins * worker_processes / 4
    
    # 這個值理論上越大越好,但最多可承受多少請求與配件和網絡相關,也可最大可打開文件,最大可用sockets數量(約64K)有關
    worker_connections  10480;
}web


    
    


http {
    include       mime.types;
    default_type  application/octet-stream;算法

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';apache

    #access_log  logs/access.log  main;
    
    # 關閉此項可減小IO開銷,但也沒法記錄訪問信息,不利用業務分析,通常運維狀況不建議使用,
    #若是不須要查看訪問日誌必須設置爲0ff由於若是不設置爲off那麼它會自動打印的,註釋了都沒有用的
    access_log off;
    
    server_tokens   off; # 控制版本爲了安全

     underscores_in_headers on;  #若是將其設置爲off,那麼當出現不合法的HTTP頭部時,Nginx會拒絕        #服務,並直接向用戶發送400(Bad Request)錯誤。若是將其設置爲on,則會忽略此HTTP頭部。

 

    sendfile        on;
    #防止網絡阻塞
    tcp_nopush     on;

    #keepalive_timeout  0;
    # HTTP1.1支持持久鏈接alive
    # 下降每一個鏈接的alive時間可在必定程度上提升可響應鏈接數量,因此通常可適當下降此值
    #長鏈接超時時間,單位是秒
    keepalive_timeout  50;

    
    #默認狀況下,Nginx的gzip壓縮是關閉的, gzip壓縮功能就是可讓你節省很多帶寬,可是會增長服務器CPU的開銷哦
    #若是開啓了反向代理,那麼須要注意了,反向代理時候若是配置很差,有多是會卡死的
    #開啓壓縮   
    gzip  on;
    
    
    #爲指定的客戶端禁用gzip功能,IE6或者更低版本禁用,IE6不支持壓縮,爲了兼容性
    gzip_disable "msie6"; 
    
    #判斷客戶端是否支持gzip壓縮,若是不支持就不開啓壓縮
    gzip_vary on;
    
    #gzip壓縮用於http1.1協議
    #gzip_http_version 1.1;
    
    #gzip_static 告訴nginx在壓縮資源以前,先查找是否有預先gzip處理過的資源。
    #這要求你預先壓縮你的文件(在這個例子中被註釋掉了),
    #從而容許你使用最高壓縮比,這樣nginx就不用再壓縮這些文件了
    # gzip_static on; 
    
    #默認值: gzip_buffers 4 4k/8k
    #做用域: http, server, location
    #設置系統獲取幾個單位的緩存用於存儲gzip的壓縮結果數據流。 例如 4 4k 表明以4k爲單位,按照原始數據大小以4k爲單位的4倍申請內存。
    # 4 8k 表明以8k爲單位,按照原始數據大小以8k爲單位的4倍申請內存。
    #若是沒有設置,默認值是申請跟原始數據相同大小的內存空間去存儲gzip壓縮結果
    gzip_buffers 4 16k;
    
    #Nginx做爲反向代理的時候啓用,開啓或者關閉後端服務器返回的結果,匹配的前提是後端服務器必需要返回包含」Via」的 header頭。
    #容許或者禁止壓縮基於請求和響應的響應流。咱們設置爲any,意味着將會壓縮全部的請求
    #off 代理不壓縮,默認設置是off,可是測試的時候發現這個配置不起做用,仍是壓縮了  若是代理服務器已經將對應的文件壓縮了,那麼這裏不會對其再次壓縮的,若是沒有壓縮,則會壓縮
    #gzip_proxied off; 
    
    #設置對數據啓用壓縮的最少字節數。若是一個請求小於1000字節,咱們最好不要壓縮它,由於壓縮這些小的數據會下降處理此請求的全部進程的速度。
    # 太短的內容壓縮效果不佳,壓縮過程還會浪費系統資源
    gzip_min_length 2048;
    
    #設置數據的壓縮等級。這個等級能夠是1-9之間的任意數值,9是最慢可是壓縮比最大的。咱們設置爲4,這是一個比較折中的設置
    gzip_comp_level 6;
    
    #設置須要壓縮的數據格式。下面例子中已經有一些了,你也能夠再添加更多的格式。設置哪壓縮種文本文件可參考 conf/mime.types   text/html無效了
    gzip_types  application/javascript text/plain text/css application/x-javascript application/xml application/xml+rss text/javascript; 
    
    
    

    server {
       
        
        #使用HTTPS 而且開啓SSL
        listen       443 ssl;
        server_name  www.qzhibao.com;

        charset utf-8;

        #access_log  logs/host.access.log  main;
        
        
        #下面是專爲 SSL的 配置 
        
        #公鑰
        #證書實際上是個公鑰,它會被髮送到鏈接服務器的每一個客戶端,ssl_certificate_key私鑰是用來解密的,因此它的權限要獲得保護但nginx的主進程可以讀取。
        #固然私鑰和證書能夠放在一個證書文件中,這種方式也只有公鑰證書才發送到client。
        ssl_certificate      /data/source/ssl_nginx/my_ssl/ssl-bundle.crt;
        #私鑰
        ssl_certificate_key  /data/source/ssl_nginx/myserver4.key;
        
        #設置ssl/tls會話緩存的類型和大小。若是設置了這個參數通常是shared,buildin可能會參數內存碎片,
    #默認是none,和off差很少,停用緩存。如shared:SSL:10m表示我全部的nginx工做進程共享ssl會話緩存,官網介紹說1M能夠存放約4000個sessions。
    #Session cache 的原理是使用 client hello 中的 session id 查詢服務端的 session cache, 若是服務端有對應的緩存,
    #則直接使用已有的 session 信息提早完成握手,稱爲簡化握手。
    #須要消耗服務端內存來存儲 session 內
    #session id 是 TLS 協議的標準字段,市面上的瀏覽器所有都支持 session cache。
        ssl_session_cache    shared:SSL:10m;
    #客戶端能夠重用會話緩存中ssl參數的過時時間,內網系統默認5分鐘過短了,能夠設成30m即30分鐘甚至4h。
        ssl_session_timeout  30m;
        
        #設置較長的keepalive_timeout也能夠減小請求ssl會話協商的開銷,但同時得考慮線程的併發數了
    #keepalive_timeout   50;
    
    #ssl_protocols指令用於啓動特定的加密協議,nginx在1.1.13和1.0.12版本後默認是ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2,
    # TLSv1.1與TLSv1.2要確保OpenSSL >= 1.0.1 ,SSLv3 如今還有不少地方在用但有很多被攻擊的漏洞。    
    ssl_protocols SSLv2 SSLv3 TLSv1; 
    
    #這裏就是定義服務器的驗證算法 ,加密算法
    #ssl_ciphers選擇加密套件,不一樣的瀏覽器所支持的套件(和順序)可能會不一樣。
    #這裏指定的是OpenSSL庫可以識別的寫法,你能夠經過 openssl -v cipher 'RC4:HIGH:!aNULL:!MD5'(後面是你所指定的套件加密算法) 來看所支持算法。
    ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
       
       #使用上面說明的 nginx配置的 驗證算法,加密算法
        #設置協商加密算法時,優先使用咱們服務端的加密套件,而不是客戶端瀏覽器的加密套件
        ssl_prefer_server_ciphers  on;

        
        
    
        location ~.*\.(jpg|jpeg|png|doc|gif|htm|html|bmp|swf|ioc|rar|zip|txt|flv|mid|ppt|pdf|xls|mp3|wma)$ {
        
        #配置Nginx動靜分離,定義的靜態頁面直接從Nginx發佈目錄讀取,不過發佈項目的時候得將項目也發到nginx的發佈目錄。這樣作針對的是遠程的動靜分離,特別是負載均衡的時候更加須要使用了
        #也能夠是後端服務器的項目地址,好比tomcat的,這樣比較方便,不用將項目再次發佈到nginx裏面的,這樣作針對與本地的動靜分離
        #root    html;  
        #root    D:/tomcat/7.65/apache-tomcat-7.0.65-windows-x86/apache-tomcat-7.0.65/webapps;
        #root   /data/web/qzb_pc/target/qzb_pc-1.0-SNAPSHOT/WEB-INF/jsp;
        root    /data/web/qzbpc/target/qzbpc-1.0-SNAPSHOT/WEB-INF/jsp;
        #expires定義用戶瀏覽器緩存的時間爲15天,若是靜態頁面不常更新,能夠設置更長,這樣能夠節省帶寬和緩解服務器的壓力        
        expires 7d; 
        }
        
        
        
         location / {
            #後端服務器數據回傳時間(代理髮送超時)  
            proxy_connect_timeout   60s; 
            
            #後端服務器數據回傳時間(代理髮送超時) 
            proxy_send_timeout      60s; 
            
            #鏈接成功後,後端服務器響應時間(代理接收超時)  
            proxy_read_timeout      60s; 
            
            
            #容許客戶端請求的最大單文件字節數  
            client_max_body_size   10m; 
            
            
            #proxy_buffering:該指令控制緩衝是否啓用。默認狀況下,它的值是「on」。
            
            
            #緩衝區代理緩衝用戶端請求的最大字節數
            client_body_buffer_size   128k;   
            
            
            #設置代理服務器(nginx)保存用戶頭信息的緩衝區大小
            #從後端服務器的響應頭緩衝區大小,它包含headers,和其餘部分響應是分開的。
            #該指令設置響應部分的緩衝區大小。默認狀況下,它和proxy_buffers是相同的尺寸,
            #但由於這是用於頭信息,這一般能夠設置爲一個較低的值。
            proxy_buffer_size   4k; 
            
            #proxy_buffers緩衝區,網頁平均在32k如下的設置
            #該指令控制代理響應緩衝區的數量(第一個參數)和大小(第二個參數)。
            #默認配置是8個緩衝區大小等於一個內存頁(4K或者8K)。
            #增長緩衝區的數目可讓你緩衝更多信息。
            proxy_buffers   4 32k; 
            
            #高負荷下緩衝大小(proxy_buffers*2)
            #此指令設置標註「client-ready」緩衝區的最大尺寸。
            #而客戶端能夠一次讀取來自一個緩衝區的數據,緩衝被放置在隊列中,批量發送到客戶端。
            #此指令控制容許是在這種狀態下的緩衝空間的大小。
            proxy_busy_buffers_size   64k; 
            
            #設定緩存文件夾大小,大於這個值,將從upstream服務器傳
            #這是每一個請求能用磁盤上臨時文件最大大小。
            #這些當上遊響應太大不能裝配到緩衝區時被建立
            #沒有設置緩存文件夾,因此不能直接設置這個,不然報錯
            #proxy_max_temp_file_size 2048m;
            
            #這是當被代理服務器的響應過大時Nginx一次性寫入臨時文件的數據量。
            proxy_temp_file_write_size  64k;
        
           # root   html;
           # index  index.html index.htm;
            
            
            
        
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
            
        #後端的Web服務器能夠經過X-Forwarded-For獲取用戶真實IP
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    
        
        proxy_pass http://www.qzhibao.com:9090;        
            
        }
        
        
        

       

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }
    
    
    
    server{
       listen       80;
       server_name  qzhibao.com  www.qzhibao.com;
       charset utf-8;
       
       location ~.webscan_360_cn\.(html)$ {
        
        #配置Nginx動靜分離,定義的靜態頁面直接從Nginx發佈目錄讀取,不過發佈項目的時候得將項目也發到nginx的發佈目錄。這樣作針對的是遠程的動靜分離,特別是負載均衡的時候更加須要使用了
        #也能夠是後端服務器的項目地址,好比tomcat的,這樣比較方便,不用將項目再次發佈到nginx裏面的,這樣作針對與本地的動靜分離
        #root    html;  
        #root    D:/tomcat/7.65/apache-tomcat-7.0.65-windows-x86/apache-tomcat-7.0.65/webapps;
        #root   /data/web/qzb_pc/target/qzb_pc-1.0-SNAPSHOT/WEB-INF/jsp;
        root    /data/web/qzbpc/target/qzbpc-1.0-SNAPSHOT/WEB-INF/jsp;
        #expires定義用戶瀏覽器緩存的時間爲15天,若是靜態頁面不常更新,能夠設置更長,這樣能夠節省帶寬和緩解服務器的壓力        
        #expires 7d; 
        }
       
       location / {
            #必須將rewrite放入location裏面,不然上面的localtion那個就不起效果了
            rewrite  ^(.*)    https://www.qzhibao.com$1 permanent; 
        }
        
        
       
      
    }
    
    server{
       #監聽443端口,由於https默認的端口就是443的,就算沒有使用ssl證書,也是能夠安全的打開和使用的,不會提示不安全,若是使用不夠好的ssl,瀏覽器可能會攔截的
       listen       443;
       server_name    qzhibao.com;
       charset utf-8;
       
       rewrite  ^(.*)    https://www.qzhibao.com$1 permanent; 
    }
    
    server{
       listen       80;
       server_name    m.qzhibao.com;
       charset utf-8;
       rewrite  ^(.*)    https://m.qzhibao.com$1 permanent; 
    }
    
    
    
    
    
    
    
     server {
        #listen       80;
        listen       443 ssl;
        server_name  m.qzhibao.com;

        charset utf-8;

        #access_log  logs/host.access.log  main;
        
        
        #下面是專爲 SSL的 配置 
        
        #公鑰
        #證書實際上是個公鑰,它會被髮送到鏈接服務器的每一個客戶端,ssl_certificate_key私鑰是用來解密的,因此它的權限要獲得保護但nginx的主進程可以讀取。
        #固然私鑰和證書能夠放在一個證書文件中,這種方式也只有公鑰證書才發送到client。
        ssl_certificate        /data/source/ssl_nginx/my_ssl/ssl-bundle.crt;
        #私鑰
        ssl_certificate_key    /data/source/ssl_nginx/myserver4.key;
        
        #設置ssl/tls會話緩存的類型和大小。若是設置了這個參數通常是shared,buildin可能會參數內存碎片,
    #默認是none,和off差很少,停用緩存。如shared:SSL:10m表示我全部的nginx工做進程共享ssl會話緩存,官網介紹說1M能夠存放約4000個sessions。
    #Session cache 的原理是使用 client hello 中的 session id 查詢服務端的 session cache, 若是服務端有對應的緩存,
    #則直接使用已有的 session 信息提早完成握手,稱爲簡化握手。
    #須要消耗服務端內存來存儲 session 內
    #session id 是 TLS 協議的標準字段,市面上的瀏覽器所有都支持 session cache。
        ssl_session_cache    shared:SSL:10m;
    #客戶端能夠重用會話緩存中ssl參數的過時時間,內網系統默認5分鐘過短了,能夠設成30m即30分鐘甚至4h。
        ssl_session_timeout  30m;
        
        #設置較長的keepalive_timeout也能夠減小請求ssl會話協商的開銷,但同時得考慮線程的併發數了
    #keepalive_timeout   50;
    
    #ssl_protocols指令用於啓動特定的加密協議,nginx在1.1.13和1.0.12版本後默認是ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2,
    # TLSv1.1與TLSv1.2要確保OpenSSL >= 1.0.1 ,SSLv3 如今還有不少地方在用但有很多被攻擊的漏洞。    
    ssl_protocols SSLv2 SSLv3 TLSv1; 
    
    #這裏就是定義服務器的驗證算法 ,加密算法
    #ssl_ciphers選擇加密套件,不一樣的瀏覽器所支持的套件(和順序)可能會不一樣。
    #這裏指定的是OpenSSL庫可以識別的寫法,你能夠經過 openssl -v cipher 'RC4:HIGH:!aNULL:!MD5'(後面是你所指定的套件加密算法) 來看所支持算法。
    ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
       
       #使用上面說明的 nginx配置的 驗證算法,加密算法
        #設置協商加密算法時,優先使用咱們服務端的加密套件,而不是客戶端瀏覽器的加密套件
        ssl_prefer_server_ciphers  on;
        
        
        
        location ~.*\.(jpg|jpeg|png|doc|gif|htm|html|bmp|swf|ioc|rar|zip|txt|flv|mid|ppt|pdf|xls|mp3|wma)$ {
        
        #配置Nginx動靜分離,定義的靜態頁面直接從Nginx發佈目錄讀取,不過發佈項目的時候得將項目也發到nginx的發佈目錄。這樣作針對的是遠程的動靜分離,特別是負載均衡的時候更加須要使用了
        #也能夠是後端服務器的項目地址,好比tomcat的,這樣比較方便,不用將項目再次發佈到nginx裏面的,這樣作針對與本地的動靜分離
        #root    html;  
        #root    D:/tomcat/7.65/apache-tomcat-7.0.65-windows-x86/apache-tomcat-7.0.65/webapps;
        #root   /data/web/qzb_2/target/qzb-2.0-SNAPSHOT/WEB-INF/jsp;
        root    /data/web/qzb/target/qzb-2.0-SNAPSHOT/WEB-INF/jsp;
        #expires定義用戶瀏覽器緩存的時間爲15天,若是靜態頁面不常更新,能夠設置更長,這樣能夠節省帶寬和緩解服務器的壓力        
        expires 7d; 
        }
        
        
        
         location / {
            #後端服務器數據回傳時間(代理髮送超時)  
            proxy_connect_timeout   60s; 
            
            #後端服務器數據回傳時間(代理髮送超時) 
            proxy_send_timeout      60s; 
            
            #鏈接成功後,後端服務器響應時間(代理接收超時)  
            proxy_read_timeout      60s; 
            
            
            #容許客戶端請求的最大單文件字節數  
            client_max_body_size   10m; 
            
            
            #proxy_buffering:該指令控制緩衝是否啓用。默認狀況下,它的值是「on」。
            
            
            #緩衝區代理緩衝用戶端請求的最大字節數
            client_body_buffer_size   128k;   
            
            
            #設置代理服務器(nginx)保存用戶頭信息的緩衝區大小
            #從後端服務器的響應頭緩衝區大小,它包含headers,和其餘部分響應是分開的。
            #該指令設置響應部分的緩衝區大小。默認狀況下,它和proxy_buffers是相同的尺寸,
            #但由於這是用於頭信息,這一般能夠設置爲一個較低的值。
            proxy_buffer_size   4k; 
            
            #proxy_buffers緩衝區,網頁平均在32k如下的設置
            #該指令控制代理響應緩衝區的數量(第一個參數)和大小(第二個參數)。
            #默認配置是8個緩衝區大小等於一個內存頁(4K或者8K)。
            #增長緩衝區的數目可讓你緩衝更多信息。
            proxy_buffers   4 32k; 
            
            #高負荷下緩衝大小(proxy_buffers*2)
            #此指令設置標註「client-ready」緩衝區的最大尺寸。
            #而客戶端能夠一次讀取來自一個緩衝區的數據,緩衝被放置在隊列中,批量發送到客戶端。
            #此指令控制容許是在這種狀態下的緩衝空間的大小。
            proxy_busy_buffers_size   64k; 
            
            #設定緩存文件夾大小,大於這個值,將從upstream服務器傳
            #這是每一個請求能用磁盤上臨時文件最大大小。
            #這些當上遊響應太大不能裝配到緩衝區時被建立
            #沒有設置緩存文件夾,因此不能直接設置這個,不然報錯
            #proxy_max_temp_file_size 2048m;
            
            #這是當被代理服務器的響應過大時Nginx一次性寫入臨時文件的數據量。
            proxy_temp_file_write_size  64k;
        
           # root   html;
           # index  index.html index.htm;
            
            
            
        
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
            
        #後端的Web服務器能夠經過X-Forwarded-For獲取用戶真實IP
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    
        
        proxy_pass http://m.qzhibao.com:9090;        
            
        }
        
        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

       
    }
    
    
    
    
    
    
     server {
       
        listen       9446 ssl;
        server_name  m.qzhibao.com;

        charset utf-8;

        #access_log  logs/host.access.log  main;
        
        
        #下面是專爲 SSL的 配置 
        
        #公鑰
        #證書實際上是個公鑰,它會被髮送到鏈接服務器的每一個客戶端,ssl_certificate_key私鑰是用來解密的,因此它的權限要獲得保護但nginx的主進程可以讀取。
        #固然私鑰和證書能夠放在一個證書文件中,這種方式也只有公鑰證書才發送到client。
        ssl_certificate        /data/source/ssl_nginx/my_ssl/ssl-bundle.crt;
        #私鑰
        ssl_certificate_key    /data/source/ssl_nginx/myserver4.key;
        
        #設置ssl/tls會話緩存的類型和大小。若是設置了這個參數通常是shared,buildin可能會參數內存碎片,
    #默認是none,和off差很少,停用緩存。如shared:SSL:10m表示我全部的nginx工做進程共享ssl會話緩存,官網介紹說1M能夠存放約4000個sessions。
    #Session cache 的原理是使用 client hello 中的 session id 查詢服務端的 session cache, 若是服務端有對應的緩存,
    #則直接使用已有的 session 信息提早完成握手,稱爲簡化握手。
    #須要消耗服務端內存來存儲 session 內
    #session id 是 TLS 協議的標準字段,市面上的瀏覽器所有都支持 session cache。
        ssl_session_cache    shared:SSL:10m;
    #客戶端能夠重用會話緩存中ssl參數的過時時間,內網系統默認5分鐘過短了,能夠設成30m即30分鐘甚至4h。
        ssl_session_timeout  30m;
        
        #設置較長的keepalive_timeout也能夠減小請求ssl會話協商的開銷,但同時得考慮線程的併發數了
    #keepalive_timeout   50;
    
    #ssl_protocols指令用於啓動特定的加密協議,nginx在1.1.13和1.0.12版本後默認是ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2,
    # TLSv1.1與TLSv1.2要確保OpenSSL >= 1.0.1 ,SSLv3 如今還有不少地方在用但有很多被攻擊的漏洞。    
    ssl_protocols SSLv2 SSLv3 TLSv1; 
    
    #這裏就是定義服務器的驗證算法 ,加密算法
    #ssl_ciphers選擇加密套件,不一樣的瀏覽器所支持的套件(和順序)可能會不一樣。
    #這裏指定的是OpenSSL庫可以識別的寫法,你能夠經過 openssl -v cipher 'RC4:HIGH:!aNULL:!MD5'(後面是你所指定的套件加密算法) 來看所支持算法。
    ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";
       
       #使用上面說明的 nginx配置的 驗證算法,加密算法
        #設置協商加密算法時,優先使用咱們服務端的加密套件,而不是客戶端瀏覽器的加密套件
        ssl_prefer_server_ciphers  on;
        
        
        #目前不要緩存js和css由於常常更新
        location ~.*\.(jpg|jpeg|png|doc|gif|htm|html|bmp|swf|ioc|rar|zip|txt|flv|mid|ppt|pdf|xls|mp3|wma)$ {
        
        #配置Nginx動靜分離,定義的靜態頁面直接從Nginx發佈目錄讀取,不過發佈項目的時候得將項目也發到nginx的發佈目錄。這樣作針對的是遠程的動靜分離,特別是負載均衡的時候更加須要使用了
        #也能夠是後端服務器的項目地址,好比tomcat的,這樣比較方便,不用將項目再次發佈到nginx裏面的,這樣作針對與本地的動靜分離
        #root    html;  
        #root    D:/tomcat/7.65/apache-tomcat-7.0.65-windows-x86/apache-tomcat-7.0.65/webapps;
        #root   /data/web/qzb_2/target/qzb-2.0-SNAPSHOT/WEB-INF/jsp;
        root    /data/web/qzb_app/target/qzb_app-1.0-SNAPSHOT/WEB-INF/jsp;
        
        #expires定義用戶瀏覽器緩存的時間爲15天,若是靜態頁面不常更新,能夠設置更長,這樣能夠節省帶寬和緩解服務器的壓力        
        expires 7d; 
        }
        
        
        
         location / {
            #後端服務器數據回傳時間(代理髮送超時)  
            proxy_connect_timeout   60s; 
            
            #後端服務器數據回傳時間(代理髮送超時) 
            proxy_send_timeout      60s; 
            
            #鏈接成功後,後端服務器響應時間(代理接收超時)  
            proxy_read_timeout      60s; 
            
            
            #容許客戶端請求的最大單文件字節數  
            client_max_body_size   10m; 
            
            
            #proxy_buffering:該指令控制緩衝是否啓用。默認狀況下,它的值是「on」。
            
            
            #緩衝區代理緩衝用戶端請求的最大字節數
            client_body_buffer_size   128k;   
            
            
            #設置代理服務器(nginx)保存用戶頭信息的緩衝區大小
            #從後端服務器的響應頭緩衝區大小,它包含headers,和其餘部分響應是分開的。
            #該指令設置響應部分的緩衝區大小。默認狀況下,它和proxy_buffers是相同的尺寸,
            #但由於這是用於頭信息,這一般能夠設置爲一個較低的值。
            proxy_buffer_size   4k; 
            
            #proxy_buffers緩衝區,網頁平均在32k如下的設置
            #該指令控制代理響應緩衝區的數量(第一個參數)和大小(第二個參數)。
            #默認配置是8個緩衝區大小等於一個內存頁(4K或者8K)。
            #增長緩衝區的數目可讓你緩衝更多信息。
            proxy_buffers   4 32k; 
            
            #高負荷下緩衝大小(proxy_buffers*2)
            #此指令設置標註「client-ready」緩衝區的最大尺寸。
            #而客戶端能夠一次讀取來自一個緩衝區的數據,緩衝被放置在隊列中,批量發送到客戶端。
            #此指令控制容許是在這種狀態下的緩衝空間的大小。
            proxy_busy_buffers_size   64k; 
            
            #設定緩存文件夾大小,大於這個值,將從upstream服務器傳
            #這是每一個請求能用磁盤上臨時文件最大大小。
            #這些當上遊響應太大不能裝配到緩衝區時被建立
            #沒有設置緩存文件夾,因此不能直接設置這個,不然報錯
            #proxy_max_temp_file_size 2048m;
            
            #這是當被代理服務器的響應過大時Nginx一次性寫入臨時文件的數據量。
            proxy_temp_file_write_size  64k;
        
           # root   html;
           # index  index.html index.htm;
            
            
            
        
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
            
        #後端的Web服務器能夠經過X-Forwarded-For獲取用戶真實IP
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    
        
        proxy_pass http://m.qzhibao.com:9292;        
            
        }
        
        
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

       
    }
    
    
    
    
    
    
    
    #server{
    #   listen 80;
    #   server_name t2.qzhibao.com;
    #   charset utf-8;
    #能夠跳轉的,301重定向, permanent是永久跳轉, redirect是單次重定向使用
    #   rewrite  ^(.*)    http://tpc.qzhibao.com:9090$1 permanent; 
    #  
    #}


    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #監聽443 端口,而且開啓 ssl 的證書模式
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}  

相關文章
相關標籤/搜索