• 71760

    文章

  • 657

    评论

  • 17

    友链

  • 最近新加了换肤功能,大家多来逛逛吧~~~~
  • 喜欢这个网站的朋友可以加一下QQ群,我们一起交流技术。

LNMP---nginx反向代理、nginx负载均衡、配置nginx的ssl

撸了今年阿里、腾讯和美团的面试,我有一个重要发现.......>>

4.48/49 nginx反向代理

4.50 nginx负载均衡

4.51 配置nginx的ssl

 

扩展链接:    https://github.com/aminglinux/nginx/tree/master/ssl

 

 

一、nginx反向代理

什么叫反向代理?

A想要访问C上的网站
A(用户)-->  B(在和C同一个机房,并且有公网即外网)-->  C(不带公网的机器)
A可以访问B,B可以访问C,最终A成功访问到了C,即代理的过程,用B代替A去访问C,B是代理的机器

什么场景会使用反向代理?

1)访问不带公网的内网机器

2)解决两台机器之间通信有障碍的问题

场景设置:

1)A B 两台机器,其中A只有内网,B有内网和外网
2)A的内网ip是 192.168.246.128
3)B的内网ip是 192.168.246.33  B的外网IP是 192.168.253.129
4)C为客户端,C只能访问B的外网IP,不能访问A或者B的内网IP

需求目的:

C要访问到A内网上的网站,C通过访问B,B访问到了A,最终C访问到了A

在B机器上编辑虚拟主机配置文件

discuz.tobe.com.conf

server
{
        listen 80;
        server_name discuz.tobe.com;

        location /
        {
            proxy_pass http://192.168.246.128; #此处的ip为真正的源的内网ip,B的nginx会去访问这个ip,通过这个ip访问到了网站
            proxy_set_header Host $host;    #设定header信息,代理时的header是什么,$host域名即server_name
            proxy_set_header X-Real-IP $remote_addr;    # 最后两行为了在日志当中显示源ip和显示CB两台机器的ip
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
}

下方的即为header信息

绑定hosts

 

二、nginx负载均衡

参考https://my.oschina.net/u/4093217/blog/3050955

什么是负载均衡?

负载均衡就是,把请求均衡地分发到后端的各个机器上面。
比如,A B C D 四台WEB服务器,现在E要访问这4台服务器,F为Nginx反向代理服务器,可以让F把E的请求均衡地发送到A B C D 4台服务器上。

使用 dig 查看域名; 没有安装可以用yum安装此包:yum install -y bind-utils

在192.168.246.33这台机器上进行配置:

vi apelearn.com.conf

upstream apelearn    #upstream定义负载均衡组
    {
        ip_hash;    #负载均衡算法
        server 115.159.51.96:80 weight=100; #真正的服务器ip地址  #weight=100,权重最高100,最小0
        server 47.104.7.242:80;

    }
    server
    {
        listen 80;
        server_name www.apelearn.com;
        location /
        {
            proxy_pass http://apelearn;    #apelearn即upstream定义的
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }

curl -x127.0.0.1:80 www.apelearn.com -I    此时可以通过自己的机器能访问该网站。说明设置成功

三、配置nginx的ssl

Nginx的SSL

让Nginx实现用https来访问网站。http是80端口,https是443端口。端口可以定义
https其实就是一种加密的http。

为什么要加密

举例:如果要在网上银行汇款,在你汇款过程当中,你会输入银行卡的密码。如果不加密,这些数据在传输过程中就有可能被人截获。

如果使用了https,那么数据在传输过程中是会加密的。即使抓到了数据包,但是无法破解出来。

申请证书:

网站:www.wosign.com (沃通)
免费的:freessl.cn
注册账号,输入域名,开始申请,在这个过程中需要到DNSpod去加一条TXT的记录

DNSpod:

把对应的txt信息填入进去

设置完成后会生成证书信息,在服务器上创建ssl目录用来存放证书。

xxx.crt文件用来加密
xxx.key用来解密

在虚拟主机中配置:

vim discuz.tobe.com.conf

监听端口改为443 ssl 

#ssl on;
ssl_certificate /path/to/xxx.crt;
ssl_certificate_key /path/to/xxx.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

如果报这个错误,说明nginx 1.15 及以后的版本,不需要再写 ssl on; 了,注释或删除

nginx: [warn] the "ssl" directive is deprecated, use the "listen ... ssl" directive instead in /etc/nginx/conf.d/discuz.tobe.com.conf:4

重启nginx,出现监听443端口

firewall-cmd --add-port=443/tcp --permanent   把443端口添加到白名单

firewall-cmd --reload  重新加载

在另一台机器上,curl访问https: 返回网站信息即成功

curl -k -H "host:discuz.tobe.com" https://192.168.246.128/index.php       

 


695856371Web网页设计师②群 | 喜欢本站的朋友可以收藏本站,或者加入我们大家一起来交流技术!

欢迎来到梁钟霖个人博客网站。本个人博客网站提供最新的站长新闻,各种互联网资讯。 还提供个人博客模板,最新最全的java教程,java面试题。在此我将尽我最大所能将此个人博客网站做的最好! 谢谢大家,愿大家一起进步!

转载原创文章请注明出处,转载至: 梁钟霖个人博客www.liangzl.com

0条评论

Loading...


发表评论

电子邮件地址不会被公开。 必填项已用*标注

自定义皮肤
注册梁钟霖个人博客