在服務器端,用Nginx配置一個靜態文件很容易,只須要在nginx.conf文件中加上:html
server { listen ip:80; server_name XX.XX.com; server_name_in_redirect off; charset UTF-8; location / { root /data/apache_htdocs/apply/; index index.html index.htm; expires 1d; } }
$ openssl genrsa -des3 -out server.key 2048
以上命令會生成一個server.key文件nginx
使用如下命令能夠跳過輸入密碼的步驟:apache
$ openssl rsa -in server.key -out server.key
$ openssl req -new -key server.key -out server.csr
其中Country Name填CN,Common Name填主機名(https://XX.XX.com/...,這裏的主機名爲XX.XX.com),其餘均可不填。服務器
$ openssl req -new -x509 -key server.key -out ca.crt -days 3650
這個證書用來給本身的服務器證書籤名session
$ openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt
通過以上步驟,一共生成了5個文件:app
ca.crt ca.srl server.crt server.csr server.key
其中server.crt和server.key就是Nginx須要的證書文件tcp
Nignx配置文件nginx.conf中加入:ui
server { listen ip:443 ssl; server_name XX.XX.com; ssl_certificate /data/XX/keys/server.crt; ssl_certificate_key /data/XX/keys/server.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { root /data/apache_htdocs/admin/; index index.html index.htm; expires 1d; } }
配置好以後運行 nginx -t 檢查配置是否有語法錯誤spa
沒問題的話運行 nginx -s reload 從新加載配置文件code
運行 netstat -lntp 能夠查看新增了一個443端口的nginx服務:
tcp 0 0 ip:443 0.0.0.0:* LISTEN pid/nginx
nginx -t 時報錯以下:
nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module
解決方案:
利用Nginx源碼編譯一個帶ngx_http_ssl_module模塊的nginx,替換掉現有的nginx,具體步驟以下
(1)查看如今的nginx編譯參數
$ /usr/local/nginx/sbin/nginx -V nginx version: nginx/1.8.0 built by gcc 4.4.6 20110731 (Red Hat 4.4.6-4) (GCC) built with OpenSSL 1.0.1m 19 Mar 2015 TLS SNI support enabled configure arguments: --prefix=/usr/local/nginx --with-pcre=/usr/local/pcre-8.10
(2)利用源碼從新編譯nginx
$ cd /usr/local/nginx-1.8.0 $ ./configure --prefix=/usr/local/nginx --with-pcre=/usr/local/pcre-8.10 --with-http_ssl_module
其中--with-http_ssl_module是新加的參數
配置完運行make進行編譯,注意不須要運行make install命令
(3)將新編譯生成的nginx替換現有的nginx
覆蓋以前先備份現有的nginx:
$ cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
中止nginx服務:
$ /usr/local/nginx/sbin/nginx -s stop
替換現有的nginx:
$ cp ./objs/nginx /usr/local/nginx/sbin/
啓動nginx:
$ /usr/local/nginx/sbin/nginx
./configure或make Nginx時報錯:
./configure: error: the HTTP rewrite module requires the PCRE library.
解決方案:
源碼安裝openssl和pcre
源碼下載地址
openssl: https://www.openssl.org/(直接下載:https://www.openssl.org/source/openssl-1.1.1.tar.gz)
pcre: https://www.pcre.org/(直接下載:ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/)
源碼安裝:
(1)解壓
$ tar zxvf pcre-8.42.tar.gz $ cd pcre-8.42
(2)配置
$ ./configure --prefix=/usr/local/pcre
(3)編譯
$ make
(4)安裝
$ make install
編譯和安裝能夠合成一步:make && make install
openssl的安裝同理