nginx配置ssl

這周的主要任務,是對項目進行收尾工做並上線,完整的體驗了一下項目的上線過程,總的來講仍是頗有收穫的,選取其中的nginx配置證書來寫寫。html

證書配置

申請證書

證書配置的第一步,固然得有證書才行,這一步就不說了。nginx

修改nginx配置

image.png
通常來講,只須要修改兩個參數ubuntu

ssl_certificate 和 ssl_certificate_key修改爲你的證書所做的位置。
ssl_certificate對應的文件多是 .pem
ssl on 已被棄用,用listen……ssl代替

修改完之後,基本的配置就完成了,重啓nginxcentos

nginx -s reload

nginx:[emerg]unknown directive ssl

出現了這個錯誤,這是由於配置SSL證書須要引用到nginx的中SSL模塊,然而咱們一開始編譯的Nginx的時候並無把SSL模塊一塊兒編譯進去,如何解決呢?解決辦法也很簡單網站

  1. 進入nginx的解壓目錄,執行./configure --with-http\_ssl\_module,這時若你的系統中未安裝openssl可能會出現錯誤,須要安裝opensslspa

    #ubuntu
      apt install openssl openssl-devel
    
      #centos
      yum -y install openssl openssl-devel
  2. 執行make命令,可是不要執行make install,由於make是用來編譯的,而make install是安裝,否則你整個nginx會從新覆蓋的。
  3. 在咱們執行完作命令後,咱們能夠查看到在nginx解壓目錄下,objs文件夾中多了一個nginx的文件,這個就是新版本的程序了。首先咱們把以前的nginx先備份一下,而後把新的程序複製過去覆蓋以前的便可。日誌

    cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak #備份
    
    cp objs/nginx /usr/local/nginx/sbin/nginx
  4. 檢驗code

    ./nginx -V

    image.png

Permission denied

實際上,訪問網站遇到的問題是500,開始第一反應是用500去查詢,沒找到什麼有價值的,而後去看錯誤日誌
image.png
緣由是重定向循環了, 而之因此會這樣是由於nginx的配置,
image.pngorm

咱們須要瞭解try_files這個參數server

try_files

語法格式

格式1:try_files  _file_ ... _uri_;  
 格式2:try_files  _file_ ... =_code_;
  可應用的上下文:server,location段

官方解釋

Checks the existence of files in the specified order and uses the first found file for request processing; the processing is performed in the current context. The path to a file is constructed from the  _file_parameter according to the  root and  alias directives. It is possible to check directory’s existence by specifying a slash at the end of a name, e.g. 「 $uri/」. If none of the files were found, an internal redirect to the  _uri_ specified in the last parameter is made.

關鍵點1:按指定的file順序查找存在的文件,並使用第一個找到的文件進行請求處理

關鍵點2:查找路徑是按照給定的root或alias爲根路徑來查找的($uri)

關鍵點3:若是給出的file都沒有匹配到,則從新請求最後一個參數給定的uri,就是新的location匹配

關鍵點4:若是是格式2,若是最後一個參數是 = 404 ,若給出的file都沒有匹配到,則最後返回404的響應碼

更多詳細內容能夠看這篇文章或查看官方文檔

再結合上面的報錯信息
image.png
也就大概明白上面爲何會循環了,
image.png

解決辦法

發生這個錯誤是由於nginx沒法進入該文件所在文件夾或沒法讀該文件,解決辦法有不少,我選擇了一個我以爲最簡單的
image.png

相關文章
相關標籤/搜索