nginx+ssl

环境介绍:centos6.4 
         nginx1.4.5
         CentOS001:10.10.54.54
1.下载wget http://nginx.org/download/nginx-1.4.5.tar.gz
2.编译
1)解压
[root@CentOS001 softs]# tar xvf nginx-1.4.5.tar.gz 
2)编译三部曲
[root@CentOS001 nginx-1.4.5]# ./configure --prefix=/usr/local/nginx --user=apache --group=apache --with-http_stub_status_module  \
--with-http_gzip_static_module --with-http_ssl_module
make 
make install
3.编写启动脚本
[root@CentOS001 nginx-1.4.5]# vim /etc/init.d/nginx
================================================
#!/bin/bash
# 
# nginx - this script starts and stops the nginx daemon 
# 
# chkconfig:   - 85 15 
# description:  Nginx is an HTTP(S) server, HTTP(S) reverse \ 
#               proxy and IMAP/POP3 proxy server 
# processname: nginx 
# config:      /usr/local/nginx/conf/nginx.conf
# config:      /usr/local/nginx/sbin/nginx
# pidfile:     /usr/local/nginx/logs/nginx.pid

#variables
opt=$1
NGINX_CONF=/usr/local/nginx/conf/nginx.conf
NGINX=/usr/local/nginx/sbin/nginx
NGINX_PID=/usr/local/nginx/logs/nginx.pid

# Source function library. 
. /etc/rc.d/init.d/functions

#function
function if_opt {
if [ $2 == 0 ]; then
   echo -n "nginx is $1 ok!" && success && echo
else
   echo -n  "nginx is $1 error!" && failure && echo
fi
}

##start nginx
case $opt in
start)
if [ -f ${NGINX_PID} ]; then
 echo "nginx is already start!"
else
  ${NGINX} -c ${NGINX_CONF}
  if_opt start $?
fi
;;

##stop nginx
stop)
stop)
if [ ! -f ${NGINX_PID} ] || [ `netstat -tnpl | grep nginx | wc -l` -lt 1 ]; then
   echo "nginx is already stopped!"
else
   cat ${NGINX_PID} | xargs kill -QUIT
   if_opt stop $?
fi
;;

##restart nginx
restart)
if [ `netstat -tnpl | grep nginx | wc -l` -ge 1 ]; then
    cat ${NGINX_PID} | xargs kill -HUP
    if_opt restart $?
else
   echo "nginx is not running..." && echo "start nginx"
   ${NGINX} -c ${NGINX_CONF}
   if_opt restart $?
fi
;;

##test nginx server
configtest)
${NGINX} -t ${NGINX_CONF}
  if_opt configtest $?
;;
*)
echo "usage:$1 {start|stop|restart|configtest}"
esac
======================================================
//注意:$2代表$?是否执行成功;NGINX_PID不稳定,建议用`netstat -tnpl | grep nginx | wc -l` 
4.为此脚本赋予执行权限
[root@CentOS001 nginx-1.4.5]# chmod +x /etc/init.d/nginx 
5.添加至服务管理列表,使其开机自启动
[root@CentOS001 nginx-1.4.5]# chkconfig --add nginx
6.新建目录
[root@CentOS001 ~]# mkdir -p /usr/local/nginx/conf/ssl
[root@CentOS001 ~]# cd /usr/local/nginx/conf/ssl/
7.生成一个私有key 
[root@CentOS001 ssl]# openssl genrsa -des3 -out xiaoq.com.key 1024
Generating RSA private key, 1024 bit long modulus
..........................................................++++++
...++++++
e is 65537 (0x10001)
Enter pass phrase for xiaoq.com.key:                --322815
Verifying - Enter pass phrase for xiaoq.com.key:    
8.生成CSR(Certificate Signing Request)文件
[root@CentOS001 ssl]# openssl req -new -key xiaoq.com.key -out xiaoq.com.csr
Enter pass phrase for xiaoq.com.key:               --322815
填写证书内容,组织机构、域名等,Common Name填写域名 
9. 创建一个自签署的证书
[root@CentOS001 ssl]# cp xiaoq.com.key xiaoq.com.key.bak
[root@CentOS001 ssl]# openssl rsa -in xiaoq.com.key.bak -out xiaoq.com.key
Enter pass phrase for xiaoq.com.key.bak:           --322815
writing RSA key
[root@CentOS001 ssl]# openssl x509 -req -days 365 -in xiaoq.com.csr -signkey xiaoq.com.key -out xiaoq.com.crt
Signature ok
subject=/C=cn/ST=hn/L=ly/O=sw/OU=ssr/CN=ssr/[email protected]
Getting Private key
10.编辑配置文件
[root@CentOS001 ssl]# vim /usr/local/nginx/conf/nginx.conf
===============================================
 server {
         ##server port and name
        listen       443;
        server_name  member.xiaoq.com;
        ssl                  on;
        ##ssl log files
        access_log  logs/ssl-access.log;
        error_log   logs/ssl-error.log;
        ##ssl cert files
        ssl_certificate      ssl/xiaoq.com.crt;
        ssl_certificate_key  ssl/xiaoq.com.key;
        keepalive_timeout    60;
location /  {
             proxy_pass http://member.xiaoq.com;
             proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
                 ##set headers
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                ##Most PHP, Python, Rails, Java App can use this header             
                 proxy_set_header X-Forwarded-Proto https;

                ## By default we don't want to redirect it
                proxy_redirect     on;
        }
    }
===============================================
11.重启服务
[root@CentOS001 ssl]# /etc/init.d/nginx restart
12.测试
https://member.xiaoq.com/


你可能感兴趣的:(nginx,ssl)