zoukankan      html  css  js  c++  java
  • nginx第十一天

    配置nginx的单向ssl

    Nginx配置SSL

    Nginx配置示例(单向)
    cp /etc/pki/ca_test/server/server.* /usr/local/nginx/conf/
    {
        listen 443 ssl;
        server_name www.aminglinux.com;
        index index.html index.php;
        root /data/wwwroot/aminglinux.com;
        ssl on;
        ssl_certificate server.crt;
        ssl_certificate_key server.key;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ALL:!DH:!EXPORT:!RC4:+HIGH:+MEDIUM:!eNULL;
        ssl_prefer_server_ciphers on;
        ...
    }
    
    配置说明
    1. 443端口为ssl监听端口。
    2. ssl on表示打开ssl支持。
    3. ssl_certificate指定crt文件所在路径,如果写相对路径,必须把该文件和nginx.conf文件放到一个目录下。
    4. ssl_certificate_key指定key文件所在路径。
    5. ssl_protocols指定SSL协议。
    6. ssl_ciphers配置ssl加密算法,多个算法用:分隔,ALL表示全部算法,!表示不启用该算法,+表示将该算法排到最后面去。
    7. ssl_prefer_server_ciphers 如果不指定默认为off,当为on时,在使用SSLv3和TLS协议时,服务器加密算法将优于客户端加密算法。
    
    Nginx配置双向认证
    cp /etc/pki/ca_test/root/ca.crt /usr/local/nginx/conf/
    配置示例:
    {
        listen 443 ssl;
        server_name www.aminglinux.com;
        index index.html index.php;
        root /data/wwwroot/aminglinux.com;
        ssl on;
        ssl_certificate server.crt;
        ssl_certificate_key server.key;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ALL:!DH:!EXPORT:!RC4:+HIGH:+MEDIUM:!eNULL;
        ssl_prefer_server_ciphers on;
        ssl_client_certificate ca.crt; //这里的ca.crt是根证书公钥文件
        ssl_verify_client on;
        ...
    }
    客户端(浏览器)操作
    如果不进行以下操作,浏览器会出现400错误。400 Bad Request(No required SSL certificate was sent)
    首先需要将client.key转换为pfx(p12)格式
    
    # cd /etc/pki/ca_test/client
    # openssl pkcs12 -export -inkey client.key -in client.crt -out client.pfx  //这一步需要输入一个自定义密码,一会在windows上安装的时候要用到,需要记一下。
    
    然后将client.pfx拷贝到windows下,双击即可安装。
    
    也可以直接curl测试:
    curl -k --cert /etc/pki/ca_test/client/client.crt  --key /etc/pki/ca_test/client/client.key https

    ngxin错误日志

    Nginx的错误日志

    Nginx错误日志平时不用太关注,但是一旦出了问题,就需要借助错误日志来判断问题所在。
    
    配置参数格式:error_log /path/to/log level;
    
    Nginx错误日志级别
    常见的错误日志级别有debug | info | notice | warn | error | crit | alert | emerg
    级别越高记录的信息越少,如果不定义,默认级别为error.
    
    它可以配置在main、http、server、location段里。
    
    如果在配置文件中定义了两个error_log,在同一个配置段里的话会产生冲突,所以同一个段里只允许配置一个error_log。
    但是,在不同的配置段中出现是没问题的。
    
    Nginx错误日志示例
    error_log  /var/log/nginx/error.log crit;
    
    如果要想彻底关闭error_log,需要这样配置
    error_log /dev/null;

    nginx访问日志和日志格式

    Nginx访问日志格式

    Nginx访问日志可以设置自定义的格式,来满足特定的需求。
    
    访问日志格式示例
    示例1
        log_format combined_realip '$remote_addr $http_x_forwarded_for [$time_local]'
        '$host "$request_uri" $status'
        '"$http_referer" "$http_user_agent"';
    
    示例2
        log_format main '$remote_addr [$time_local] '
        '$host "$request_uri" $status "$request"'
        '"$http_referer" "$http_user_agent" "$request_time"';
    
    若不配置log_format或者不在access_log配置中指定log_format,则默认格式为:
        '$remote_addr - $remote_user [$time_local] "$request" '
        '$status $body_bytes_sent "$http_referer" '
        '"$http_user_agent";
    
    常见变量
    变量说明
    $time_local 通用日志格式下的本地时间;(服务器时间)
    $remote_addr 客户端(用户)IP地址
    $status 请求状态码,如200,404,301,302等
    $body_bytes_sent 发送给客户端的字节数,不包括响应头的大小
    $bytes_sent 发送给客户端的总字节数
    $request_length 请求的长度(包括请求行,请求头和请求正文)
    $request_time 请求处理时间,单位为秒,小数的形式
    $upstream_addr 集群轮询地址
    $upstream_response_time 指从Nginx向后端(php-cgi)建立连接开始到接受完数据然后关闭连接为止的时间
    $remote_user 用来记录客户端用户名称
    $request 请求方式(GET或者POST等)+URL(包含$request_method,$host,$request_uri)
    $http_user_agent 用户浏览器标识
    $http_host 请求的url地址(目标url地址)的host
    $host 等同于$http_host
    $http_referer 来源页面,即从哪个页面转到本页,如果直接在浏览器输入网址来访问,则referer为空
    $uri 请求中的当前URI(不带请求参数,参数位于$args),不同于浏览器传递的$request_uri的值,它可以通过内部重定向,或者使用index指令进行修改。
    $document_uri 等同于$uri
    $request_uri 比$uri多了参数,即$uri+$args
    $http_x_forwarded_for 如果使用了代理,这个参数会记录代理服务器的ip和客户端的ip
  • 相关阅读:
    Lua 有关字符串的剪切 以及匹配
    [Decode error
    mac 终端 常用命令
    mac apache 相关终端命令
    spring boot架构设计——权限验证及API接口统一返回格式
    ios 官网文档翻译—Create a Table View(swift)
    quicksqlite简介
    android ndk 环境搭建和简单实例
    android 关闭软键盘
    android 弹出全局加载等待动画
  • 原文地址:https://www.cnblogs.com/jessi-w/p/12075011.html
Copyright © 2011-2022 走看看