一、Nginx配置HTTP
在服务器端,用Nginx配置一个静态文件很容易,只需要在nginx.conf文件中加上:
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; } }
二、获取HTTPS证书
1.生成密钥key(server.key)
$ openssl genrsa -des3 -out server.key 2048
以上命令会生成一个server.key文件
使用以下命令可以跳过输入密码的步骤:
$ openssl rsa -in server.key -out server.key
2.创建服务器证书的申请文件(server.csr)
$ openssl req -new -key server.key -out server.csr
其中Country Name填CN,Common Name填主机名(https://XX.XX.com/...,这里的主机名为XX.XX.com),其他都可不填。
3.创建CA证书(ca.crt/ca.srl)
$ openssl req -new -x509 -key server.key -out ca.crt -days 3650
这个证书用来给自己的服务器证书签名
4.创建服务器证书(server.crt)
$ openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out server.crt
经过以上步骤,一共生成了5个文件:
ca.crt ca.srl server.crt server.csr server.key
其中server.crt和server.key就是Nginx需要的证书文件
三、配置Nginx
Nignx配置文件nginx.conf中加入:
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 检查配置是否有语法错误
没问题的话运行 nginx -s reload 重新加载配置文件
运行 netstat -lntp 可以查看新增了一个443端口的nginx服务:
tcp 0 0 ip:443 0.0.0.0:* LISTEN pid/nginx
四、遇到的问题及解决方案
1.问题一:缺少ngx_http_ssl_module模块
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
2.问题二:缺少OPENSSL或PCRE模块
./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的安装同理