Nginx

DNS

localhost 解析为 dns域名,为了方便记忆 我们会使用域名再通过dns解析成我们的ip地址
一般来说我们是在C:\Windows\System32\drivers\etc目录下的host 解析域名
如果找到就返回对应的ip地址,没有则通过电信运行商找到域名对应的ip地址

Nginx实际运用场景

1、反向代理/正向代理 客户端发送请求到nginx服务器,nginx转发到真实的服务器访问,从而保证真实的服务安全性!
2、负载均衡 可以对集群的节点实现负载和故障转移,负载均衡算法:(轮询,权重、随机、hash等·
3、微服务网关入口,可以对微服务网关实现集群(×)
4、静态服务器比tomcat性能多的多,可以存放静态资源
5、保护网站 使用nginx+lua实现对请求实现服务限流

Nginx安装使用

下载地址:http://nginx.org/en/download.html
启动:

命令行启动

首先,我们进入nginx所在的文件夹,在地址栏敲击命令"cmd",最后按确认键;

1、config 配置文件(nginx 核心配置文件 nginx.conf)
2、contrib 存放实用工具
3、docs 存放文档
4、html 存放静态资源
5、logs 存放日志

进入到命令行模式

#启动命令 start nginx 
start nginx

有时候,我们在启动之前可以检查下配置命令是否正确

#检查命令
nginx -t -c conf/nginx.conf

image.png

Nginx基本控制

要启动nginx,请运行可执行文件。一旦nginx启动,就可以通过调用带有-s参数的可执行文件来控制它。使用以下语法:

nginx -s signal
当信号可以是下列之一:

stop - 快速关机
quit - 优雅的关机
reload - 重新加载配置文件
reopen - 重新打开日志文件

例如,要停止nginx进程并等待工作进程完成当前请求的服务,可以执行以下命令:

nginx -s  quit

这个命令应该在启动nginx的同一个用户下执行。
说明:如果在启动过程中未正常启动,可以去查看错误日志,根据其中报错信息寻找解决问题的方法;

问题:An attempt was made to access a socket in a way forbidden by its access permissions 报错
默认80端口占用问题
解决方法:
一般方法是关闭80端口
强制解决:
在 nginx-1.12.1\conf 路径下,打开nginx.conf文件,将监听的端口80 修改为 8090,重新启动Nginx

Nginx访问

http://127.0.0.1:8090/

基于nginx存放html静态资源

客户端 -> nginx 服务器 ->html/order

例如我们的项目是前后端分离的,可以直接将前端静态资源直接存放到html目录中

根据业务区分域名
1、在hosts文件中创建

127.0.0.1 number.com
127.0.0.1 order.com

用于区分不同的业务
2、在nginx下创建两个子文件夹,内各包含一个html文件
![({NQBH]%0ATGRXAI9CW1D36.png](https://img-blog.csdnimg.cn/img_convert/52ae48d8bd49c5dcfb8f79f0844f98f0.png#averageHue=#232221&clientId=u6be9f52b-0136-4&from=paste&height=226&id=u1a415722&name=({NQBH]%0ATGRXAI9CW1D36.png&originHeight=226&originWidth=692&originalType=binary&ratio=1&rotation=0&showTitle=false&size=17904&status=done&style=none&taskId=u978f472e-b691-47b4-9664-88bbc79082e&title=&width=692)
![5~X%BFRZRZ)ZB{7DVGSR5KaTeX parse error: Expected 'EOF', got '#' at position 84: …228668b40f7.png#̲averageHue=#1e1…M.png&originHeight=160&originWidth=676&originalType=binary&ratio=1&rotation=0&showTitle=false&size=10476&status=done&style=none&taskId=uf1ee463e-f4a0-4819-b796-7efab6e4ef3&title=&width=676)
AUNHUKY_7SVHAU23_Z@0GZ0.png
3、修改配置nginx.conf文件
server_name是域名或者ip;listen指定端口号;root指定目标文件夹
实现原理:启动nginx,通过url访问静态资源,通过server_name和listen以及要访问的文件名访问
ps:http://order.com:8090/orderMy.html
http://number.com:8090/NumberMy.html

  server {
        listen       8090;
        server_name  number.com;
        location / {
            root   html/number;
            index  index.html index.htm;
        }
    }

   server {
        listen       8090;
        server_name  order.com;
        location / {
            root   html/order;
            index  index.html index.htm;
        }
    }

4、重启nginx

正向代理和反向代理

1、正向代理

正向代理,是在用户端,比如需要访问国外的某些网站如github比较慢,在相关部门允许的情况下,我们可以使用vpm,并且vpm是我们用户浏览器端设置的

![5K4E0}9B{YKaTeX parse error: Expected '}', got 'EOF' at end of input: …name=5K4E0}9B{YMQRX44{%QUR7.png&originHeight=254&originWidth=798&originalType=binary&ratio=1&rotation=0&showTitle=false&size=77860&status=done&style=none&taskId=u24a19d26-03f1-44fb-9db8-8abdc974ea9&title=&width=798)
浏览器先访问vpn地址,vpn转发请求,最后将请求结果原来返回

正向代理和反向代理区别:正向代理隐藏用户的真实行为、反向代理隐藏真实的服务器

正向代理需要客户端安装软件代理,隐藏用户的真实行为

2、反向代理

客户端请求达到Nginx代理服务器 再通过代理服务器转发到真实的服务器 隐藏服务器真实的ip地址
E$(~D7CODJ2``4`R{O7S_AI.png

实操:
1、在host文件中添加域名和本机ip

127.0.0.1 www.zxq.com

2、在nginx配置文件中添加对应的服务

 server {
        listen       8090;
        server_name  www.zxq.com;
        location / {
            // 反向代理到tomcat服务器
            proxy_pass  http://127.0.0.1:8080;
            index  index.html index.htm;
        }
    }

重启nginx!!!

通过在浏览器中输入域名和端口访问到这个服务后,nginx代理转达到toncat服务器,从而隐藏服务器端真实IP
3、简单springbootDemo

@RestController
public class Demo1 {

    @GetMapping("/getMessage")
    public String demo() {
        return "nihao";
    }

}

4、启动springboot项目,通过url访问
![V0C L B N 1 V V A H B F 4 B I LBN1VVAHBF4BI%ZK~6F.png](https://img-blog.csdnimg.cn/img_convert/24ee9844d113521492fbf0fc00c93cda.png#averageHue=#b8d6bd&clientId=u9d39a1eb-61af-4&from=paste&height=143&id=uf297ef09&name=V0C LBN1VVAHBF4BILBN1VVAHBF4BI%ZK~6F.png&originHeight=143&originWidth=493&originalType=binary&ratio=1&rotation=0&showTitle=false&size=11996&status=done&style=none&taskId=u14214d69-def5-4c65-a38a-5eb0f576829&title=&width=493)

基于Nginx 负载均衡策略

轮询策略

tomcat实现集群,客户端通过url访问到nignx服务器端,服务器端转发到tomcat端,实现轮流访问我们的tomcat服务器,这就是轮询,如果访问到其中一个tomcat访问不通,就会访问另外一台tomcat,实现来回切换,即故障转移
![{I5CPCQ]Z3Z14]J{5@K_{P.png](https://img-blog.csdnimg.cn/img_convert/1c76679b95f7233ed0e295eddb23532c.png#averageHue=#f8f4e9&clientId=ucb4c22ac-dcf2-4&from=paste&height=263&id=u9a754647&name={I5CPCQ]Z3Z14]J{5@K_{P.png&originHeight=263&originWidth=891&originalType=binary&ratio=1&rotation=0&showTitle=false&size=117183&status=done&style=none&taskId=u74a14353-f13b-43bf-9e1e-ea35ac1dbac&title=&width=891)

实现:
1、修改host文件

127.0.0.1 upstream.zxq.com

2、配置nginx文件

 upstream backServer{
    # 实现轮询
        server 127.0.0.1:8080;
        server 127.0.0.1:8081;
    }
server {
        listen       8090;
        server_name  upstream.zxq.com;
        location / {
            proxy_pass  http://backServer;
            index  index.html index.htm;
        }
    }

3、重启nginx服务
4、浏览器访问
![W0EKP]HJQE9W}0I05PDHI8H.png](https://img-blog.csdnimg.cn/img_convert/29a7f677c8414c6ed5ca17403c0d12a4.png#averageHue=#bfdec4&clientId=ucb4c22ac-dcf2-4&from=paste&height=118&id=ub9857777&name=W0EKP]HJQE9W}0I05PDHI8H.png&originHeight=118&originWidth=537&originalType=binary&ratio=1&rotation=0&showTitle=false&size=12502&status=done&style=none&taskId=uf89cf409-fff4-43e7-b202-f965b1750ba&title=&width=537)
![%HEWZB2@OB}RMG{WEY8M.png](https://img-blog.csdnimg.cn/img_convert/69d541c6c61654c141194083b35e5963.png#averageHue=#bcdcc2&clientId=ucb4c22ac-dcf2-4&from=paste&height=118&id=u621944f5&name=%_HEWZB2@OB_}RMG{WEY8M.png&originHeight=118&originWidth=478&originalType=binary&ratio=1&rotation=0&showTitle=false&size=10893&status=done&style=none&taskId=uaa6f38d7-a225-4f90-9f0e-01df96ba684&title=&width=478)
访问同一个url。实现两个tomcat来回切换-

权重策略

多个tomcat之间,强度有强有弱,因此需要配置权重,能力好的多访问,能力弱的少访问,即权重策略
实现方法:
在配置多个tomcat时配置,其他配置如上不变

   upstream backServer{
    # 实现轮询 默认权重比为11
        server 127.0.0.1:8080 weight=2;
        server 127.0.0.1:8081 weight=1;
    }

故障转移

一般推荐tomcat集群,一台tomcat宕机,底层会使用故障转移策略,访问另外一台tomcat
当转发地址发生宕机,无须访问 nginx会默认自动故障转移到下一个地址,集群保证服务器端高可用 故障转移 立马切换到下一台

Nginx location 配置

在一个server中需要配置多个location进行定位匹配,根据开头转发到不同的tomcat服务器(可以解决跨域问题)

server {
        listen       8090;
        server_name  www.my.com;
        location /number {
            proxy_pass  http://127.0.0.1:8080/;
            index  index.html index.htm;
        }
         location /order {
            proxy_pass  http://127.0.0.1:8081/;
            index  index.html index.htm;
        }
    }

重启nginx,访问地址:http://www.my.com:8090/number http://www.my.com:8090/order

java代码:

@RestController
public class Demo2 {
    @GetMapping("/")
    public String demo1() {
        return "nginx8080";
    }
}

效果图:
LXT3_WTC)IR@MI3AEF2{M.png

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值