• nginx设置SSL反向代理


    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

    openssl-private-key.png

    生成CSR(Certificate Signing Request)文件:

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

    openssl-create-csr.png

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

    二、配置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配置大功告成了,你可以使用https://youdomain.com访问你的网站了

  • 相关阅读:
    Android手势锁实现
    网页模板pug基本语法
    React入门看这篇就够了
    我曾站在离你最近的天涯
    一文看懂浏览器事件循环
    Vi编辑网卡
    2019.6.11_MySQL进阶二:主键与外键
    2019.6.13_笔试题目及答案
    2019.6.13_MySQL简单命令的使用
    2019.6.13_SQL语句中----删除表数据drop、truncate和delete的用法
  • 原文地址:https://www.cnblogs.com/feika/p/4563127.html
Copyright © 2020-2023  润新知