Linux上Nginx中開啟SSL模組,實現Https訪問

行走中的少年發表於2020-10-31

一、Nginx簡介

1.Nginx是一款輕量級、高效能的web伺服器/反向代理伺服器,能實現負載均衡。
2.負載均衡的方式有:輪詢、權重(weight)、熱備(backup)以及IP地址Hash。

二、主題業務背景

一般專案正式上線後,不會再使用伺服器的ip地址來訪問專案,而是使用事先申請好的域名(該域名繫結IP地址)來訪問,這樣一來Nginx作為代理伺服器需要開啟SSL模組,就需要在 nginx.conf 檔案進行相關SSL證照的配置以便Nginx實現Https訪問,這樣大家都可以使用域名隨地訪問我們的專案了。

三、Nginx實現Https方式前期準備

SSL證照申請

Nginx配置檔案中需配置SSL證照的兩種pem 和 key格式的檔案路徑,要拿到這個兩個格式檔案,首先得使用你的域名成功到申請證照。

Nginx需要開啟SSL模組

1.要實現你的Nginx實現Https訪問,首先你的Nginx需要開啟SSL模組。
2.開啟SSL模組有兩種方式:nginx安裝時就開啟該模組、nginx安裝成功後再單獨開啟此模組。兩種方式開啟的詳細步驟大家可以搜尋相關文章。
3.推薦開啟SSL兩種方式參考博文:
https://blog.csdn.net/qq_42751248/article/details/109326646
https://www.cnblogs.com/ghjbk/p/6744131.html

四、Nginx中配置Https

配置前介紹

為了便於更好理解我的nginx.conf檔案裡的內容,我這裡簡單介紹一下我的專案:前後端分離的架構,前端是vue專案,後臺是SpringBoot專案,由於SpringBoot框架內嵌Tomcat,因此不用再在伺服器上安裝Tomcat,直接本地打成 jar 包上傳至服務,使用命令 “nohup java -jar ***.jar &” 直接啟動後端工程即可,前端工程本地打成靜態工程上傳到伺服器特定的目錄下即可。

nginx.conf配置詳情

#user  nobody;
worker_processes  1;

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

#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


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"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    # HTTPS server
    server {
        listen       443 ssl;
		#域名
        server_name  域名名稱;
	    client_max_body_size 1024M;
		
		#填寫SSL證照的兩個格式檔案的絕對路徑 cert資料夾存放這兩種檔案 
		#cert資料夾位於nginx安裝路徑/usr/local/nginx/conf下
        ssl_certificate      cert/******.pem;
        ssl_certificate_key  cert/******.key;
		
        #以下都是基礎配置 照寫即可
        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;
        
        location / {
		  #前端打包後的靜態工程存放路徑
          root   /usr/local/app/*****;
		  #預設訪問index.html
          try_files $uri $uri/ /index.html;
          index  index.html index.htm;
        }
        #所有的帶prod-api請求進入
        location /prod-api/ {
           #proxy_set_header Host $http_host;
           #proxy_set_header X-Real-IP $remote_addr;
           #proxy_set_header REMOTE-HOST $remote_addr;
           #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		   
	       #反向代理地址 由於我的後端工程也是在此伺服器上,所以是localhost
		   #如果你反向代理ip地址不是localhost 請填寫具體ip地址 並開啟該location註釋掉的proxy_set_header
       	   proxy_pass http://localhost:8080/;
       }
    }
}

相關文章