/ 中存储网

在Linux系统安装Nginx及配置https加密访问

2013-09-01 14:16:18 来源:ITJS.CN

1、安装nginx

①、为了确保能在 nginx 中使用正则表达式进行更灵活的配置,安装之前需要确定系统是否安装有 PCRE(Perl Compatible Regular Expressions)包。您可以到 ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/ 下载最新的 PCRE 源码包,使用下面命令下载编译和安装 PCRE 包:

# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.12.tar.bz2

# tar jxvf pcre-8.12.tar.bz2

# cd pcre-8.10

# ./configure –enable-utf8

# make

# make install

②、为nginx创建用户及用户组

# useradd www-nginx

# groupadd www 如果www用户组已经存在就跳过些步

# gpasswd -a www-nginx www

③、安装nginx

# wget http://nginx.org/download/nginx-1.0.3.tar.gz

# tar zxvf nginx-1.0.3.tar.gz

# cd nginx-1.0.3

# ./configure

–prefix=/usr

–sbin-path=/usr/sbin/nginx

–conf-path=/etc/nginx/nginx.conf

–error-log-path=/var/log/nginx/error.log

–pid-path=/var/run/nginx/nginx.pid

–lock-path=/var/lock/nginx.lock

–user=www-nginx

–group=www

–with-http_ssl_module

–with-http_stub_status_module

–with-http_flv_module

–with-http_gzip_static_module

–http-log-path=/var/log/nginx/access.log

–http-client-body-temp-path=/var/tmp/nginx/client/

–http-proxy-temp-path=/var/tmp/nginx/proxy/

–http-fastcgi-temp-path=/var/tmp/nginx/fcgi/

// 简单安装 ./configure –user=www-nginx –group=www –prefix=/opt/nginx –with-http_stub_status_module –with-http_ssl_module

# make

# make install

–with-http_stub_status_module 是为了启用 nginx 的 NginxStatus 功能,用来监控 nginx 的当前状态。

–with-http_ssl_module 启用http_ssl模块

–with-ipv6 支持ipv6

安装成功后 /opt/nginx 目录下有四个子目录分别是:conf、html、logs、sbin 。其中 nginx 的配置文件存放于 conf/nginx.conf,nginx 只有一个程序文件位于 sbin 目录下的 nginx 文件。确保系统的 80 端口没被其他程序占用,运行 sbin/nginx 命令来启动 Nginx,打开浏览器访问此机器的 IP,如果浏览器出现 Welcome to nginx! 则表示 nginx 已经安装并运行成功。

2、使用 OpenSSL 生成证书

创建并进入sslkey存放目录

# mkdir /opt/nginx/sslkey

# cd /opt/nginx/sslkey

①、生成RSA密钥:

# openssl genrsa -out key.pem 2048

②、生成一个证书请求

# openssl req -new -key key.pem -out cert.csr

# //会提示输入省份、城市、域名信息等,重要的是,email 一定要是你的域名后缀的你可以拿着这个文件去数字证书颁发机构(即CA)申请一个数字证书。CA会给你一个新的文件cacert.pem,那才是你的数字证书。

如果是自己做测试,就可以用下面这个命令来生成证书:

# openssl req -new -x509 -nodes -out server.crt -keyout server.key

③、修改 nginx 配置

upstream payment {

server 127.0.0.1:8080;

server 127.0.0.1:8090;

}

# HTTPS server

#

server {

listen 443;

server_name www.openeasy.net;

ssl on;

ssl_certificate /opt/nginx/sslkey/server.crt;

ssl_certificate_key /opt/nginx/sslkey/server.key;

ssl_session_timeout 5m;

ssl_protocols SSLv2 SSLv3 TLSv1;

ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;

ssl_prefer_server_ciphers on;

location / {

proxy_pass http://payment/;

proxy_redirect off;

proxy_set_header Host $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_connect_timeout 10s;

proxy_read_timeout 10s;

}

}

3、配置jexus linux dotnet服务器集群

upstream payment {

server 127.0.0.1:8080;

server 127.0.0.1:8090;

}

这里的server就是你的Jexus的服务器列表具体配置参见 用Jexus V4.2 搭建Linux dotnet web server

常用的 Nginx 参数和控制

程序运行参数

Nginx 安装后只有一个程序文件,本身并不提供各种管理程序,它是使用参数和系统信号机制对 Nginx 进程本身进行控制的。 Nginx 的参数包括有如下几个:

-c :使用指定的配置文件而不是 conf 目录下的 nginx.conf 。

-t:测试配置文件是否正确,在运行时需要重新加载配置的时候,此命令非常重要,用来检测所修改的配置文件是否有语法错误。

-v:显示 nginx 版本号。

-V:显示 nginx 的版本号以及编译环境信息以及编译时的参数。

例如我们要测试某个配置文件是否书写正确,我们可以使用以下命令

sbin/nginx – t – c conf/nginx2.conf

通过信号对 nginx 进行控制

nginx 支持下表中的信号:

信号名 作用描述

TERM, INT 快速关闭程序,中止当前正在处理的请求

QUIT 处理完当前请求后,关闭程序

HUP 重新加载配置,并开启新的工作进程,关闭就的进程,此操作不会中断请求

USR1 重新打开日志文件,用于切换日志,例如每天生成一个新的日志文件

USR2 平滑升级可执行程序

WINCH 从容关闭工作进程

有两种方式来通过这些信号去控制 Nginx,第一是通过 logs 目录下的 nginx.pid 查看当前运行的 Nginx 的进程 ID,通过 kill – XXX 来控制 Nginx,其中 XXX 就是上表中列出的信号名。如果您的系统中只有一个 Nginx 进程,那您也可以通过 killall 命令来完成,例如运行 killall – s HUP nginx 来让 Nginx 重新加载配置。