nginx配置https

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx配置https相关的知识,希望对你有一定的参考价值。

参考技术A 我的服务器使用的系统是CentOS 6,因此直接使用yum安装nginx,其它系统以及版本可能有所差异。

step1, 先要安装nginx的yum源

执行完上面的命令后,我们使用命令 yum info nginx 查看一下Nginx 软件包信息.

step2, 安装nginx, 使用命令 yum install nginx 安装,等待安装完成。

检查nginx 版本 nginx -v

这个时候我们发现nginx已经安装成功了。

使用yum安装的nginx, 默认配置文件放在 /etc/nginx/nginx.conf ,使用命令 nginx -t 可以拿到配置文件的存放路径;这个命令用于测试配置文件语法是否准确无误。

使用vim查看配置内容如下:

看最后一行 include /etc/nginx/conf.d/*.conf; 便知nginx include 了 ./conf.d/ 下面的所有配置文件,因此我们也可以将配置文件放在 ./conf.d/ 目录下。

在配置Https 之前,我们需要准备好购买的SSL证书文件,我使用的是阿里云提供的免费证书。
1、将证书文件传到服务器,我使用的是 scp 命令将证书拷贝到服务器的 /etc/nginx/ssl_certs/ 目录下面。现在该目录下有两个文件, xxx.pem 和 xxx.key 。

2、在创建配置文件 /etc/nginx/conf.d/ 目录下创建 xxx.conf 文件

将如下配置copy到配置文件中

最后重启 nginx, 使用 service nginx restart 命令重启。

访问 https://draw.lyan.me ,(PS: 我的服务器配置了dns解析),即可发现https已经生效

nginx 配置https

nginx 配置https

 

首先看下nginx的编译安装后是否缺少http_ssl_module

我自己的nginx安装目录是/usr/local/nginx

cd /usr/local/nginx/sbin

./nginx -V

结果是:configure arguments: --with-openssl=/root/openssl-1.0.2l

发现没有ssl模块儿。

这时候需要切换目录到nginx的源码包,执行./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module

然后执行make命令

这里不要进行make install,否则就是覆盖安装

 

备份原有的已经安装好的nginx

cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak

 

然后将刚刚编译好的nginx覆盖掉原有的nginx(这个时候nginx要停止状态,在ngnix安装目录的sbin目录下执行./nginx -s quit命令)

cp ./objs/nginx /usr/local/nginx/sbin/

 

在时候执行nginx安装目录sbin目录下的nginx命令 /usr/local/nginx/sbin/nginx -V

查看configure arguments,如果包含--with-http_ssl_module,则说明已经成功加入了https模块儿

 

修改nginx安装目录下的conf目录中的nginx.conf配置文件

 

在最后加入

server {
  listen 443 ssl;

  #设置你申请的域名
  server_name www.myhttpstest.com;
  root html;
  index index.html index.htm;
  ssl_certificate ../cert/214814584650232.pem;
  ssl_certificate_key ../cert/214814584650232.key;
  ssl_session_timeout 5m;
  ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_prefer_server_ciphers on;
  #设置长连接
  keepalive_timeout 70;
  #减少点击劫持
  add_header X-Frame-Options DENY;
  #禁止服务器自动解析资源类型
  add_header X-Content-Type-Options nosniff;
  #防XSS攻击
  add_header X-Xss-Protection 1;
  location / {
    root html;
    index index.html index.htm;
  }
}

 

执行/usr/local/nginx/sbin/nginx -t

检查nginx配置文件是否正确

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

 

重新加载nginx配置文件/usr/local/nginx/sbin/nginx -s reload(前提是nginx在运行),如果没有运行直接启动nginx,/usr/local/nginx/sbin/nginx

 

修改本机的hosts文件

127.0.0.1  www.myhttpstest.com

 

访问https://www.myhttpstest.com

























以上是关于nginx配置https的主要内容,如果未能解决你的问题,请参考以下文章

安装nginx

ubuntu 14.04 nginx 1.12.2 配置https遇见的坑

nginx重新编译添加ssl模块

expressjs设置tls连接https nginx服务器请求

http请求报错:The requested resource is currently locked ?

HTTP 到 HTTPS Nginx 重定向过多