Nginx配置https

                                                     nginx配置httpsjavascript

HTTPS,超文本傳輸安全協議,是以安全爲目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是SSL,所以加密的詳細內容就須要SSL。如下將介紹如何設置https。css

1、配置文件設置
html

這裏我使用的是虛擬主機設置httpsjava

nginx.conf文件,在http中加入nginx

include /usr/local/nginx/vhost/*.conf;算法

mkdir /usr/local/nginx/vhostjson

vim /usr/local/nginx/default.confvim

server {
     listen 80;
     server_name _;
          #這裏的rewrite,訪問80端口強制跳轉到https
     rewrite ^ https://$host$request_uri? permanent;
  }
  
server {
#    listen 443;  1.15版本後 ssl on; 這條被廢棄了,開啓443方式以下
    listen 443 ssl;
    server_name localhost;
    #瀏覽器直接重定向到https,避免中途的302重定向URL被篡改。進一步提升通訊的安全性。 HSTS  max-age=31536000是指接下來一年
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
    #證書存放位置
    ssl_certificate /opt/system/nginx/ssl/server.crt;
    #免密key存放位置
    ssl_certificate_key /opt/system/nginx/ssl/server.key
    #依賴SSLv3和TLSv1協議的服務器密碼將優先於客戶端密碼
    ssl_prefer_server_ciphers On;
    #指定密碼爲openssl支持的格式
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    #密碼加密方式
    ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS;

    location / {
    #主配置文件中有upstream模塊,代理後臺的兩個tomcat。
    proxy_pass http://backend;
        gzip on;
        gzip_min_length 40000;
        gzip_types application/javascript application/json text/css text/plain;
        client_max_body_size 5000M;
        proxy_connect_timeout 60;
        proxy_send_timeout 1000;
        proxy_read_timeout 200;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_set_header SERVER_ADDR $server_addr;
        proxy_set_header SERVER_PORT $server_port;
        proxy_set_header REMOTE_ADDR $remote_addr;
        proxy_set_header REMOTE_PORT $remote_port;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        error_page 500 501 502 503 504 404 400 /error.html;
        location = /error.html {
        root /usr/local/nginx/html/;
}
}


2、建立ca證書瀏覽器

一、生成服務器私鑰:tomcat

openssl genrsa -des3 -out server.key 1024

#des3是算法, -out [filename] 1024是長度,默認  會讓你輸入密碼,不小於4個字符

二、建立簽名請求的證書(CSR):

openssl req -new -key server.key -out server.csr

-new 建立一個新的證書請求文件 -key filename 指定私鑰的輸入文件,建立證書請求時須要 -out filename.csr 輸出指定的文件名

三、在加載SSL支持的Nginx並使用上述私鑰時除去必須的口令:

cp server.key server.key.org

openssl rsa -in server.key.org -out server.key

四、最後標記證書使用上述私鑰和CSR

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

五、最後會有4個文件,有用的是server.crt和server.key,放到配置文件中指定的位置便可

server.crt  server.csr  server.key  server.key.org


最後啓動nginx,訪問http://ip/ 會強制跳轉https,這裏我是代理的兩個tomcat節點,因此配置文件中使用的是proxy_pass


擴展:nginx中內置變量

$args                         請求中的參數,如www.abc.com/test/hello?a=1&b=2的$args就是a=1&b=2

$document_root        Nginx虛擬主機配置文件中的root參數對應的值

$document_uri          當前請求中不包含指令的URI,如www.test.com/test/ok?a=1&b=2的document_uri就是/test/hello,不包含後面的參數

$host                        主機頭,也就是域名

$http_user_agent      客戶端的詳細信息,也就是瀏覽器的標識,用curl -A能夠指定

$http_cookie             客戶端的cookie信息

$limit_rate                 若是Nginx服務器使用limit_rate配置了顯示網絡速率,則會顯示,若是沒有設置,則顯示0

$remote_addr           客戶端的公網IP

$remote_port            客戶端的端口

$request_method      請求資源的方式,GET/PUT/DELETE等

$request_filename     當前請求的資源文件的路徑名稱,至關因而$document_root/$document_uri的組合

$request_uri              請求的連接,包括$document_uri和$args

$scheme                   請求的協議,如ftp、http、https

$server_protocol       客戶端請求資源使用的協議的版本,如HTTP/1.0,HTTP/1.1,HTTP/2.0等

$server_addr             服務器IP地址

$server_name           服務器的主機名

$server_port             服務器的端口號

$uri                          和$document_uri相同

$http_referer            客戶端請求時的referer,通俗講就是該請求是經過哪一個連接跳過來的

相關文章
相關標籤/搜索