Mac下nginx配置http2

zhongzhong05發表於2017-12-12

參考: https://www.widlabs.com/article/mac-os-x-nginx-compile-symbol-not-found-for-architecture-x86_64

http://homeway.me/2015/07/10/rebuild-osx-environment/

http://www.jianshu.com/p/9523d888cf77

http://blog.sina.com.cn/s/blog_beebb7590102wwvv.html

下載nginx原始碼,openssl原始碼壓縮包

nginx下載地址:http://nginx.org/en/download.html openssl下載地址:https://www.openssl.org/source/

解壓nginx和openssl壓縮包,解壓之後的目錄如下:

輸入圖片說明
在這裡輸入圖片標題

進入到nginx目錄,使用configure命令,新增https和http2兩個模組,

./configure  --with-http_ssl_module --with-http_v2_module --with-openssl=/usr/local/Cellar/openssl-1.0.2l
複製程式碼

執行上面的命令,在輸出的資訊中,你可能會看到以下資訊:

輸入圖片說明
在這裡輸入圖片標題

如果出現以上資訊,那麼在命令之後完成之後,需要進入到objs目錄,然後修改Makefile檔案。

在nginx目錄下:

cd objs
vim Makefile
複製程式碼

找到:

&& ./config --prefix=/usr/local/Cellar/openssl-1.0.2l/.openssl no-shared  \
複製程式碼

這句,將config替換為:

Configure darwin64-x86_64-cc
複製程式碼

在nginx目錄下執行make命令

make
複製程式碼

如果沒有按照上一步中的提示修改Makefile檔案,則會出現以下錯誤:

輸入圖片說明
在這裡輸入圖片標題

正常編譯完成的輸出:

輸入圖片說明
在這裡輸入圖片標題

安裝

sudo make install
複製程式碼

安裝完成:

輸入圖片說明
在這裡輸入圖片標題

測試nginx安裝是否成功

啟動nginx

sudo /usr/local/nginx/sbin/nginx
複製程式碼

訪問:http:localhost

輸入圖片說明
在這裡輸入圖片標題

出現以上頁面說明nginx安裝成功了。

開啟https

要開啟nginx的https,需要生成SSL Key和CSR檔案。 如何生成這些檔案參考: http://www.jianshu.com/p/9523d888cf77

以下是生成檔案之後的目錄結構,這裡我將檔案生成在/usr/local/nginx目錄下:

輸入圖片說明
在這裡輸入圖片標題

然後將/user/local/nginx/conf/nginx.conf中,下面這段配置,去掉註釋並修改成以下內容:

server {
    listen       443 ssl;
    server_name  localhost;

    ssl_certificate      /usr/local/nginx/server.crt; 
    ssl_certificate_key  /usr/local/nginx/server.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;
    }
}
複製程式碼

重新載入nginx,在/usr/local/nginx/sbin目錄下執行以下命令:

sudo ./nginx -s reload
複製程式碼

輸入圖片說明
在這裡輸入圖片標題

訪問https://localhost出現以下頁面說明配置成功。

輸入圖片說明
在這裡輸入圖片標題

開啟http2

到這一步之後,開啟nginx的http2非常簡單,只需要將上一步中https的配置中

listen       443 ssl;
複製程式碼

修改為:

listen       443 ssl http2;
複製程式碼

然後重新啟動下nginx,再次訪問https://localhost

效果圖:

輸入圖片說明
在這裡輸入圖片標題

相關文章