Nginx支持ssl如何配置

安装nginx

如用源码安装,需要先准备编译环境

yum -y install gcc gcc-c++ ncurses-devel unzip patch perl*

1)pcre安装

下载地址http://sourceforge.net/projects/pcre/files/pcre/8.37/pcre-8.37.tar.gz

[root@localhost local]# tar -zxvf pcre-8.37.tar.gz

[root@localhost local]# cd pcre-8.37

[root@localhost pcre-8.37]# ./configure 

[root@localhost pcre-8.37]# make

[root@localhost pcre-8.37]# make install

2)安装zlib包

下载地址http://zlib.net/zlib-1.2.8.tar.gz

[root@localhost pcre-8.37]# cd /usr/local/

[root@localhost local]# tar -zxvf zlib-1.2.8.tar.gz 

[root@localhost local]# cd zlib-1.2.8

[root@localhost zlib-1.2.8]# ./configure

[root@localhost zlib-1.2.8]# make

[root@localhost zlib-1.2.8]# make install

3)安装ssl

下载地址:http://www.openssl.org/source/

[root@localhost pcre-8.37]# cd /usr/local/ 

[root@localhost local]# tar -zxvf openssl-1.0.2c.tar.gz 

4)安装nginx_upstream_check_module模块 (健康监测)

下载地址:https://github.com/yaoweibin/nginx_upstream_check_module/archive/master.zip

[root@localhost local]# unzip nginx_upstream_check_module-master.zip
##5)安装nginx
下载地址http://nginx.org/download/
[root@localhost zlib-1.2.8]# cd /usr/local/

[root@localhost local]# tar -zxvf nginx-1.9.2.tar.gz 

[root@localhost local]# cd nginx-1.9.2

[root@unicorn01 nginx-1.9.2]# patch -p0 < /usr/local/nginx_upstream_check_module-master/check_1.9.2+.patch 

[root@localhost nginx-1.9.2]# ./configure --prefix=/usr/local/nginx --add-module=/usr/local/nginx_upstream_check_module-master --with-pcre=/usr/local/pcre-8.37 --with-zlib=/usr/local/zlib-1.2.8 --with-http_ssl_module --with-openssl=/usr/local/openssl-1.0.2c

[root@localhost nginx-1.9.2]# make [root@localhost nginx-1.9.2]# make install
##6)配置nginx
```shell
root@localhost local]# cd /usr/local/nginx/conf/

[root@localhost conf]# vim nginx.conf

此处根据项目需求配置负载均衡和请求代理转发

例如:

upstream cluster {

            # simple round-robin

            server 192.168.0.1:80;

            server 192.168.0.2:80;

            check interval=5000 rise=1 fall=3 timeout=4000;

            #check interval=3000 rise=2 fall=5 timeout=1000 type=ssl_hello;

            #check interval=3000 rise=2 fall=5 timeout=1000 type=http;       

            #check_http_send "HEAD / HTTP/1.0\r\n\r\n";       

            #check_http_expect_alive http_2xx http_3xx;       

            } upstream group1 {       

            server 10.51.19.63:80;       

            }       

            server {       

            listen       80;       

            #listen 8602;       

            server_name  localhost;       

#proxy_redirect  http://localhost:80/M00 /M00;

#charset koi8-r;

        #access_log  logs/host.access.log  main;

        #location / {

        #    root   html;

        #    index  index.html index.htm;

        #} location / {

                    proxy_pass [http://cluster](http://cluster/);

        }

        location /nstatus {

        check_status;

        access_log off;

        #allow SOME.IP.ADD.RESS;

        #deny all;

        }

        location /group1/M00 {

            proxy_pass http://group1;

             #health_check match=not_redirect;

             proxy_redirect off;

             proxy_set_header Host $host;

             #proxy_cache cache_one;

             proxy_cache_valid 200 1h;

             # proxy_cache_valid 301 1d;

             # proxy_cache_valid any 1m;

             expires 30d;

             }

location / {

proxy_pass [http://10.51.19.66:15672](http://10.51.19.66:15672/);

}

location /message {

proxy_pass [http://10.51.19.66:8080](http://10.51.19.66:8080/);

}

        location /filews{        

                    proxy_pass [http://10.51.19.63:8081](http://10.51.19.63:8081/);        

        }        

        location /infows{

                 proxy_pass [http://10.51.19.63:8082](http://10.51.19.63:8082/);

        }

        location /cms{

                proxy_pass [http://10.51.19.63:8083](http://10.51.19.63:8083/);

        }

        location /cmsfile{

                 proxy_pass [http://10.51.19.63:8083](http://10.51.19.63:8083/);

        }

        location /cgiws{

                    proxy_pass [http://10.51.19.64:8081](http://10.51.19.64:8081/);

        }

        location /hexinstat{

                 proxy_pass [http://10.51.19.64:8082](http://10.51.19.64:8082/);

        }

       #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html

        #

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {             root   html;         }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80

        #

        #location ~ \.php$ {

                #    proxy_pass   [http://127.0.0.1](http://127.0.0.1/);

        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

        #

        #location ~ \.php$ {

        #    root           html;

        #    fastcgi_pass   127.0.0.1:9000;

        #    fastcgi_index  index.php;

        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

        #    include        fastcgi_params;

        #}

        # deny access to .htaccess files, if Apache's document root

        # concurs with nginx's one

        #

        #location ~ /\.ht {

        #    deny  all;

        #}

        }    

        server {

        listen       443;

        server_name  localhost; ssl on;

        ssl_certificate      server.pem;

        ssl_certificate_key  server.key;

        #ssl_client_certificate ca.crt;

        #ssl_verify_client on;

        #ssl_session_cache    shared:SSL:1m;

        # ssl_session_timeout  5m;

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

        ssl_ciphers "ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4";

        ssl_prefer_server_ciphers  on;

        location /cgiws {

                    proxy_pass [http://10.51.19.64:8081/cgiws](http://10.51.19.64:8081/cgiws);

        proxy_set_header X-Real-IP $remote_addr;

        proxy_set_header SSL_CERT $ssl_client_cert;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        }

        location /infows {

                   proxy_pass [http://10.51.19.63:8082](http://10.51.19.63:8082/);

        proxy_set_header X-Real-IP $remote_addr;

        proxy_set_header SSL_CERT $ssl_client_cert;

        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        }

        location /group1/M00 {

            proxy_pass http://group1;

             #health_check match=not_redirect;

             proxy_redirect off;

             proxy_set_header Host $host;

             #proxy_cache cache_one;

             proxy_cache_valid 200 1h;

             # proxy_cache_valid 301 1d;

             # proxy_cache_valid any 1m;

             expires 30d;

             }

             #location / {

             #    root   html;

             #    index  index.html index.htm;

             #}

             }

7)启动、重启、停止

[root@localhost conf]# /usr/local/nginx/sbin/nginx

重启:
[root@localhost conf]# /usr/local/nginx/sbin/nginx -s reload

停止:
[root@localhost conf]# /usr/local/nginx/sbin/nginx -s stop

验证配置文件:
[root@localhost conf]# /usr/local/nginx/sbin/nginx -t

8)nginx监控配置

location /status { 

stub_status on; auth_basic "NginxStatus"; 

} 

http://localhost:8083/status

Active connections: 2

server accepts handled requests

3 3 54

Reading: 0 Writing: 1 Waiting: 1

解析:

Active connections //当前 Nginx 正处理的活动连接数。

server accepts handled requests //总共处理了3 个连接 , 成功创建 3 次握手,总共处理了54个请求。

Reading //nginx 读取到客户端的 Header 信息数。

Writing //nginx 返回给客户端的 Header 信息数。

Waiting //开启 keep-alive 的情况下,这个值等于 active - (reading + writing),意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接

9)nginx出现异常开启日志分析

log_format main 'remote_addr -remote_user [time_local] "request" '

'statusbody_bytes_sent "$http_referer" '

'"http_user_agent" "http_x_forwarded_for"'

'"upstream_addr" "upstream_status" "upstream_response_time" "request_time"';

access_log  logs/access.log  main;

参数说明示例

$remote_addr 客户端地址 211.28.65.253

$remote_user 客户端用户名称 --

$time_local 访问时间和时区 18/Jul/2012:17:00:01 +0800

$request 请求的URI和HTTP协议 "GET /article-10000.html HTTP/1.1"

$http_host 请求地址,即浏览器中你输入的地址(IP或域名) www.it300.com

192.168.100.100

$status HTTP请求状态 200

$upstream_status upstream状态 200

$body_bytes_sent 发送给客户端文件内容大小 1547

$http_referer url跳转来源 https://www.baidu.com/

http_user_agent 用户终端浏览器等信息 "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; SV1; GTB7.0; .NET4.0C;ssl_protocol SSL协议版本 TLSv1 ssl_cipher 交换数据中的算法 RC4-SHAupstream_addr 后台upstream的地址,即真正提供服务的主机地址 10.10.10.100:80 request_time 整个请求的总时间 0.205upstream_response_time 请求过程中,upstream响应时间 0.002

切记:

1、首先,确保安装了OpenSSL库,并且安装Nginx时使用了–with-http_ssl_module参数。

2、证书拷至nginx目录,配置如下server

3、第一次配置https时必须重启nginx才能生效,不能reload!

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,711评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,079评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,194评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,089评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,197评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,306评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,338评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,119评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,541评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,846评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,014评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,694评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,322评论 3 318
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,026评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,257评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,863评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,895评论 2 351

推荐阅读更多精彩内容