关闭

Nginx配置https和wss

时间: 2018-12-22阅读: 1381标签: nginx

一、使用Nginx足够了

常见的服务器有三种:

  • Nginx
  • IIS
  • Apache

这三种服务器都可以配置https,但是没必要全部知道,因为Nginx可以起到反向代理的作用,会配置Nginx就足够了。


二、关于HTTPS协议

HTTP协议默认端口号是80,HTTPS默认端口号是443。
HTTPS协议=HTTP+SSL,而SSL是基于公钥加密算法的。当我们访问一个使用了HTTPS的网站时,这个网站将它的公钥告知浏览器,浏览器在发送请求数据时会使用公钥对数据进行加密,这样一来就不怕有人监听数据包了,因为只有拥有私钥,才能够“理解”这些数据包。
对于普通的HTTP数据包,都是未加密的,很容易被监听。比如,当我们连上一个wifi后,我们的一切流量都用从路由器上经过,这个路由器接上抓包软件就能够看到一切,不加密的数据包简直相当于裸奔!所以,不要贪图便宜连接不知来源的wifi,更不要在不信任的wifi下填写密码表单,那样很容易泄露个人信息。而HTTPS协议能够大大解决这个问题。

对于一个现代化的网站,如果拥有自己的用户,那么就一定有使用HTTPS的必要。要全网站都是用HTTPS而不是部分链接使用HTTPS,因为访问HTTP链接的时候携带着跟访问HTTPS链接时一模一样的cookie,这就有可能泄露sessionId,而泄露sessionID跟泄露密码差不太多。

HTTPS并非百利而无一害,它对服务器性能提出了更高的要求。因为加密、解密的过程也是一个不可忽略的性能消耗。


三、获取SSL证书

获取SSL证书,最简单、最正确的姿势是使用腾讯云,申请SSL,这个过程是免费的,并且不需要任何命令行。
链接如下:
https://cloud.tencent.com/product/ssl

如果不想了解更多关于证书的内容,可以跳过下面。


证书结构

配置一个HTTPS服务所需要的证书包括几个部分:

  • Server Key(服务器私钥)
  • CSR(Certificate Signing Request)
  • CRT(X509 Certificate)

创建证书的基本流程是这样:

  • 生成自己的服务端私钥
  • 输入基本信息并用私钥签名生成CSR
  • 提交CSR给证书机构CA(免费或商业证书)签名生成CRT,或自己做CA签名生成CRT(自签名证书)。自签名证书和证书机构签名生成证书前两个步骤都是一样的,在这里统一说明一下。


自己生成证书(即公私钥)

自己生成证书最大的坏处就是,访问此网站时,浏览器会提示证书不受信任。

# 1、首先,进入你想创建证书和私钥的目录,例如:
cd /etc/nginx/

# 2、创建服务器私钥,命令会让你输入一个口令:
openssl genrsa -des3 -out server.key 1024
这句话生成server.key,这个文件长度为1024字节,这就是私钥,是服务器用来解码用户请求的宝贝。

# 3、创建签名请求的证书(CSR):
openssl req -new -key server.key -out server.csr

# 4、在加载SSL支持的Nginx并使用上述私钥时除去必须的口令:
cp server.key server.key.org
openssl rsa -in server.key.org -out server.key


# 5、最后标记证书使用上述私钥和CSR:
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.c

第3个命令是生成证书请求,会提示输入省份、城市、域名信息等,重要的是,email一定要是你的域名后缀的。这样就有一个 csr 文件了,提交给 ssl 提供商的时候就是这个 csr 文件。当然我这里并没有向证书提供商申请,而是在第4步自己签发了证书。


四、配置Nginx

在/etc/nginx/conf.d目录下新建https.conf

upstream websocket{
  server weiyinfu.cn:8080;
}
upstream web{
  server weiyinfu.cn:8080;
}
server {
    listen       443;
    server_name  weiyinfu.cn;

    ssl                  on;
    ssl_certificate      /etc/nginx/weiyinfu.cn/Nginx/1_weiyinfu.cn_bundle.crt;
    ssl_certificate_key  /etc/nginx/weiyinfu.cn/Nginx/2_weiyinfu.cn.key;

    ssl_session_timeout  5m;
    ssl_session_cache shared:SSL:50m;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2  SSLv2 SSLv3;
     ssl_ciphers  ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
     ssl_prefer_server_ciphers   on;

    location /wss {
       access_log /var/log/nginx/come-websocket.log;
       proxy_pass http://websocket/; # 代理到上面的地址去
       proxy_read_timeout 60s;
       proxy_set_header Host $host;
       proxy_set_header X-Real_IP $remote_addr;
       proxy_set_header X-Forwarded-for $remote_addr;
       proxy_http_version 1.1;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection ‘Upgrade‘;
    }

    location / {
        #root   html;
        #index  testssl.html index.html index.htm;
       access_log      /var/log/nginx/https-reverse.log;
       proxy_redirect off;
       proxy_set_header Host $host;
       proxy_set_header X-Real-IP $remote_addr;
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
       proxy_pass http://weiyinfu.cn/;
    }
}

此文件包含两部分,第一部分配置wss,第二部分配置https


五、将http重定向到https

server {  
    listen  192.168.1.111:80;  
    server_name test.com;  
      
    rewrite ^(.*)$  https://$host$1 permanent;  
}  

举例:将访问目录 \services 由http访问 重定向到 https (解决方法:nginx rewrite 加上 location 方式实现)

location ~ /services/.*$ {
        if ($server_port ~ "^80$"){
            set $rule_0 1$rule_0;
        }
        if ($rule_0 = "1"){
            rewrite /(.*) https://IP地址/$1 permanent;                       break;
        }
    }


六、验证是否配置成功

nginx -t 命令测试一下
service nginx reload重新加载配置
观察/var/log/nginx查看日志

/usr/local/nginx/sbin/nginx -t
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 (显示表示配置文件没有错误)

service nginx reload (重新加载nginx服务)  
netstat -lan | grep 443 (查看443端口)  

tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN (有看到这一行 就表示HTTPS已经在工作了)


来自:https://www.cnblogs.com/xkcp008/p/10161076.html


站长推荐

1.云服务推荐: 国内主流云服务商,各类云产品的最新活动,优惠券领取。地址:阿里云腾讯云华为云

2.广告联盟: 整理了目前主流的广告联盟平台,如果你有流量,可以作为参考选择适合你的平台点击进入

链接: http://www.fly63.com/article/detial/1668

nginx配置详解

建议同cpu数一样,如果number=2,启动nginx后,后台会看到2个nginx进程,日志输出级别有debug,info,notice,warn,error,erit,其中,debug输出日志最为详细,而crit输出日志最少,nginx进程是作为系统守护进程在进行,需要在某个文件中保存当前运行程序的主进程号

Nginx除了负载均衡,还可以做什么?

Nginx应该是现在最火的web和反向代理服务器,没有之一。她是一款诞生于俄罗斯的高性能web服务器,尤其在高并发情况下,相较Apache,有优异的表现。那除了负载均衡,她还有什么其他的用途呢,下面我们来看下。

深入 Nginx 之架构篇

Nginx 作为业界知名的高性能服务器,被广泛的应用。它的高性能正是由于其优秀的架构设计,其架构主要包括这几点:模块化设计、事件驱动架构、请求的多阶段异步处理、管理进程与多工作进程设计、内存池的设计,以下内容依次进行说明。

nginx加速_开启Gzip/文件做缓存

开启Gzip:给Nginx上 ngx_http_gzip_module 这个模块,用 nginx -V 命令查看 configure arguments 是否有,没有的话需要编译加载这个模块;给文件做缓存:图片文件,字体文件,js和css都是些可以用来缓存的文件

nginx负载均衡如何实现?

Nginx是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的Web和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。在高连接并发的情况下,Nginx是Apache服务器不错的替代品。

Web服务器之Nginx

Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供IMAP/POP3/SMTP服务。其特点是占有内存少,并发能力强。如果我们在项目中用到了Nginx,那么可以用如下的示意图表示:

Nginx 禁止某 IP 访问

总有一些不怀好意的人来访问我的网站,而且频率还很高,所以就用简单的方式禁止访问,就用 Nginx 来实现。想要添加黑名单,只要在 blocksip.conf 中添加 IP ,然后 reload 即可。

Nginx入门指南

Nginx提供了专门的gzip模块,并且模块中的指令非常丰富。gzip : 该指令用于开启或 关闭gzip模块。gzip_buffers : 设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流。

前端需要掌握的Nginx知识

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。今天呢,肯定学不完全部的啦,先学学一些现学现用的简单配置。

nginx的一般安全配置

项目一般配置,例如default.conf;nginx的主入口nginx.conf;lua的一些应用一般爬虫无法动态cookie,用作判断是否是浏览器行为;thinkphp.conf相关的配置

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!