nginx设置SSL反向代理 - NginxApache - freemouse-笔记-感悟-成长

Nginx的反向代理通常用来映射内网中提供的Apache、IIS、Lighttpd服务,以实现负载均衡;同时,由于动态服务程序运行在内网,服务器的整体安全性也有所提高,那么怎样用nginx设置SSL反向代理呢?

 

使用nginx设置SSL的优点不少:

  1. 易用性:nginx安装、升级简单,nginx的平滑升级使得网站服务器不需要重启就可以完成升级任务。
  2. 安全性:nginx对于代理是透明的,因此,相当于为放置在代理后的Apache等服务器提供一道安全屏障、可以抵御一些基本web的攻击。
  3. 低负载:负载低是nginx的另一大优点。可以在nginx代理后配置多个apache服务器以满足不同需求
  4. 缓存:可以将除动态文件以外的文件,如css、js、静态html页直接交给nginx处理,以进一步降低负载
  5. 文件压缩:nginx可以优化并减小文件传输尺寸,缩短文件读取时间。

说了一大堆优点,相信诸位看官该跃跃欲试了吧,闲话少提^_^,下面给出配置实例:

由于,下面的代码只是用来演示整个配置过程,因此,我使用的SSL安全证书是自己签名的,如果需要能够通过验证的SSL安全证书,请到CAs自我了断^_^(网站地址:www.verisign.com)。

一、生成SSL安全证书

在nginx的配置目录下新建一个文件夹用以存放证书

# cd /usr/local/nginx/conf
# mkdir ssl
# cd ssl

生成一个私有key

# openssl genrsa -des3 -out nixcraft.in.key 1024

nginx设置SSL反向代理 - NginxApache - freemouse-笔记-感悟-成长_第1张图片

生成CSR(Certificate Signing Request)文件:

# openssl req -new -key nixcraft.in.key -out nixcraft.in.csr

nginx设置SSL反向代理 - NginxApache - freemouse-笔记-感悟-成长_第2张图片

请输入自己的证书域名。上图红框的部分

二、配置SSL反向代理

编辑nginx的配置文件

#vi /usr/local/ngnix/conf/nginx.conf

添加如下代码:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
server {
         ### server port and name ###
         listen          443 ssl;
         server_name     nixcraft. in ;
 
         ### SSL log files ###
         access_log      logs /ssl-access .log;
         error_log       logs /ssl-error .log;
 
         ### SSL cert files ###
         ssl_certificate      ssl /nixcraft . in .crt;
         ssl_certificate_key  ssl /nixcraft . in .key;
         ### Add SSL specific settings here ###
         keepalive_timeout    60;
 
         ###  Limiting Ciphers ########################
         # Uncomment as per your setup
         #ssl_ciphers HIGH:!ADH;
         #ssl_perfer_server_ciphers on;
         #ssl_protocols SSLv3;
         ##############################################
         ### We want full access to SSL via backend ###
         location / {
                 proxy_pass  http: //nixcraft ;
                 ### force timeouts if one of backend is died ##
                 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     off;
       }

保存、并重新加载配置文件

# /usr/local/nginx/sbin/nginx -t
# /usr/local/nginx/sbin/nginx -s reload

查看是否配置成功:

# netstat -tulpn | grep :443

SSL配置大功告成了

阅读全文……

你可能感兴趣的:(Web,tech)