本文写于 2014年。
Nginx 是业界最流行的七层负载均衡方案。

运行环境

  • CentOS 7 64bit
  • nginx 1.10.1

需求说明

安装Nginx,对外提供Web服务

安装过程

下载源码

wget http://nginx.org/download/nginx-1.10.1.tar.gz

解压缩

tar -zxvf nginx-1.10.1.tar.gz

安装依赖

安装过程中需要的依赖包

yum install -y gcc-c++ gzip zlib-devel openssl openssl-devel pcre-devel

编译安装

cd nginx-1.10.1
./configure --prefix=/work/admin/nginx #prefix参数,指定安排目录
make & make install

检查配置并启动

修改配置文件

/work/admin/nginx/conf/nginx.conf

配置测试

/work/admin/nginx/sbin/nginx -t

启动

/work/admin/nginx/sbin/nginx

重启

/work/admin/nginx/sbin/nginx -s reload

安装 SSL 证书

生成CSR文件

可利用在线工具或者Openssl命令行生成CSR文件,使用在线工具更加简单一些。

生成后,得到两个文件,SSL.CSR和SSL.KEY,SSL.KEY务必要保管好。

申请证书

向证书服务商提供SSL.CSR文件,申请证书,经过付费或免费流程,得到证书文件CRT。

部分服务商还要求在颁发的证书后,增加中间证书的内容,比如http://www.myssl.cn/。

配置证书

将SSL.KEY重命名为server.key,证书文件重命名为server.crt,两个文件上传至Nginx的Conf目录。

修改Nginx配置文件如下:

server {
listen 443;
server_name xxx.com;

ssl on;
ssl_certificate server.crt;
ssl_certificate_key server.key;

location / {
root html;
index index.html index.htm;
}
}

注意:如果使用root或sudo权限,务必保证权限无误,启动账户必须同nginx各目录账户所有者一致。

问题解决

非root账户启动,启动后账户默认为nobody
下载大文件时,客户端出现206错误

解决方法:nginx目录下所以文件和文件夹所有者修改为启动账户
若使用root或sudo方式启动,配置文件中user需要修改为启动账户

网站自签名证书

为 Nginx 生成网站签名证书,对外提供 HTTPS 访问。

开启 SSL

./configure --prefix=/work/admin/nginx --with-http_ssl_module

生成证书

openssl genrsa -des3 -out xxx.xxx.com.key 1024
openssl req -new -key xxx.xxx.com.key -out xxx.xxx.com.csr
openssl rsa -in xxx.xxx.com.key -out xxx.xxx.com_nopwd.key
openssl x509 -req -days 3650 -in xxx.xxx.com.csr -signkey xxx.xxx.com_nopwd.key -out xxx.xxx.com.crt

xxx.xxx.com为网站域名

注意,填写证书信息时,Common Name 要填写网站域名

Common Name (eg, your name or your server's hostname) []:xxx.xxx.com