• Linux下nginx配置https协议访问


    一、配置nginx支持https协议访问,需要在编译安装nginx的时候添加相应的模块--with-http_ssl_module

    查看nginx编译参数:/usr/local/nginx/sbin/nginx -V

    如下所示:

    configure arguments: --prefix=/usr/local/nginx --with-google_perftools_module --without-http_memcached_module --user=www --group=www --with-http_stub_status_module --with-http_sub_module --with-http_ssl_module --with-http_gzip_static_module --with-openssl=/usr/local/src/openssl-1.0.1h --with-zlib=/usr/local/src/zlib-1.2.8 --with-pcre=/usr/local/src/pcre-8.35

    如果没有--with-http_gzip_static_module这个参数,需要重新编辑nginx

    二、防火墙开启https协议默认端口443

    vi /etc/sysconfig/iptables #编辑防火墙配置文件,添加以下代码

    -A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT

    :wq! #保存退出

    service iptables restart  #重启防火墙

    三、创建https证书

    确保机器上安装了openssl和openssl-devel

    yum install openssl  openssl-devel  #CentOS使用yum命令安装

    mkdir   /usr/local/nginx/conf/ssl   #创建证书存放目录

    cd /usr/local/nginx/conf/ssl  #进入目录

    创建服务器私钥:openssl genrsa -des3 -out server.key 1024  #根据提示输入证书口令

    创建签名请求的证书(CSR):openssl req -new -key server.key -out server.csr  #输入上面设置的口令

    #根据提示输入相应的信息

    Country Name (2 letter code) [XX]:cn  #国家

    State or Province Name (full name) []:zhejiang  #省份

    Locality Name (eg, city) [Default City]:hangzhou  #城市

    Organization Name (eg, company) [Default Company Ltd]:osyunwei  #公司

    Organizational Unit Name (eg, section) []:sys  #部门

    Common Name (eg, your name or your server's hostname) []:osyunwei   #主机名称

    Email Address []:xxx@qq.com  #邮箱

    Please enter the following 'extra' attributes

    to be sent with your certificate request

    A challenge password []:123456  #证书请求密钥,CA读取证书的时候需要输入密码

    An optional company name []:osyunwei  #公司名称,CA读取证书的时候需要输入密码

    openssl rsa -in server.key -out server_nopassword.key  #对key进行解密

    openssl x509 -req -days 365 -in server.csr -signkey server_nopassword.key -out server.crt

    #标记证书使用上述私钥和CSR

    四、修改nginx配置文件,加载ssl证书

    vi   /usr/local/nginx/conf/nginx.conf  #编辑

    listen       80;

    listen       443;

    ssl on;

    ssl_certificate /usr/local/nginx/conf/ssl/server.crt;

    ssl_certificate_key /usr/local/nginx/conf/ssl/server_nopassword.key;

    ssl_session_timeout 10m;

    ssl_session_cache shared:SSL:10m;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    ssl_ciphers ALL:!ADH:!EXPORT56:-RC4+RSA:+HIGH:+MEDIUM:!EXP;

    ssl_prefer_server_ciphers on;

    fastcgi_param HTTPS $https if_not_empty;  #有https协议时自动使用https,否则忽略这个参数。

    :wq! #保存退出

    service nginx restart #重启nginx

    rewrite ^(.*) https://www.osyunwei.com$1 permanent;   #可以把http协议重定向到https上面

    #301跳转也可以把http协议重定向到https上面

    server {

    listen 80;

    server_name www.osyunwei.com;

    return 301 https://$host$request_uri;

    }

    使用https协议打开网址,如下图所示:

    转载于OS运维

  • 相关阅读:
    【原创】只需3行代码,Python基础面试题:循环报数3的出圈
    【原创】MySQL同时取出最大值和最小值所在整行
    【原创】Python打印立方米
    【Python】如何像cmd一样操作系统命令
    【群答疑20210525-3】MySQL限制时间是当前月,或者月区间查询
    【群答疑20210525-1】MySQL列名相同,出现两列问题
    【原创】爬虫反爬基础常见类型总结
    【原创】Python基础面试题:按照年龄判断未成年还成年(条件语句)
    【原创】Python基础:你真的知道and和or的用法吗
    【Python】 读写MySQL
  • 原文地址:https://www.cnblogs.com/cheyunhua/p/10823888.html
Copyright © 2020-2023  润新知