前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >2020-2-24-Nginx的Http配置入门

2020-2-24-Nginx的Http配置入门

作者头像
黄腾霄
发布2020-06-10 14:46:04
4140
发布2020-06-10 14:46:04
举报
文章被收录于专栏:黄腾霄的博客

Nginx和Nginx配置

Nginx是一款高性能的反向代理和负载均衡工具。

而Nginx配置是指导Nginx转发请求的文件。

下面是一个示例配置文件。我们可以看到整个配置文件的结构很简单,即由一些全局指令(例如配置工作进程数等)和一些针对特定功能的指令块(例如http配置)构成。

指令块之中还可以嵌套指令块,以完成一些更加复杂的配置。而且子指令块中的配置如果缺省,可以从父指令块中进行获取,进一步简化了配置文件。

Nginx的Http配置

http配置是最常用的配置。它最主要的几个组成部分是upstream指令配置的负载均衡器,和server指令配置的虚拟服务器。

配置反向代理

server指令最主要的一个工作是配置反向代理,当我们访问指定网址时,Nginx帮我们把请求转发给目标服务器。但是此时对于用户端来说是无感知的。

这里我先使用express在本机3000和3001端口创建了2个Node服务,分别返回其对应的端口号。

现在我期望在访问localhost:8080/3000时,请求能转发至localhost:3000,当我访问localhost:8080/3001时,请求转发至localhost:3001

下面是对应的Nginx配置。这个配置在http指令块中定义了一个虚拟服务器,监听本机的8080端口。

location会匹配请求的uri,如果是以/3000开头,就通过proxy_pass指令将请求转发给127.0.0.1:3000。如果是以/3001开头,就通过proxy_pass指令将请求转发给127.0.0.1:3001

代码语言:javascript
复制
worker_processes ;

events {
    worker_connections ;
}

http {
    server {
        listen ;
        server_name localhost;
        location / {
            proxy_pass http://127.0.0.1:;

        }

        location / {
            proxy_pass http://127.0.0.1:;
        }
        
        error_page     /x.html;
        location = /x.html {
            root html;
        }
    }

}

我们看到这里报出来了node的异常,因为Nginx仅把请求转发给对应的服务器,并不会修改uri,所以这里实际请求的是127.0.0.1:3001/3001,而我没有在Node中对此路由进行处理,所以Node返回了404

不过我们可以从vs的输出中看到的确获得了请求。

配置静态文件服务

我们看到还有一个location它没有使用proxy_pass,而是使用了root指令。

这个指令是将对应的请求转发至Nginx服务器中,指定文件目录,这里是html/50x.html文件

可以看到这个文件的确就在Nginx的指定目录下。

因此root指令就可以将静态资源的请求直接定位到文件系统,实现动静分离的需求。

配置负载均衡

Nginx另一个强大的功能是配置负载均衡。

这里我用upstream指令配置了一个叫做backend的负载均衡器。另外将 location\的请求转发至这个负载均衡器。

在backend中,我用server指令定义了2个服务器,分别指向本机的3000端口和3001端口。此外对于3000端口的服务器配置了权重为2(默认为1)。

这样现在对本机8080端口的请求,会按照2:1的比例转发至3000端口和3001端口。

代码语言:javascript
复制
worker_processes ;

events {
    worker_connections ;
}

http {
    upstream backend {
        server 127.0.0.1: weight=;
        server 127.0.0.1:;
    }

    server {
        listen ;
        server_name localhost;
        location / {
            proxy_pass http://backend;
        }
        error_page     /x.html;
        location = /x.html {
            root html;
        }
    }
}

当然Nginx还可以通过轮询(默认),最小连接优先(least_conn指令),按ip固定服务器(ip_hash指令)等多种方式进行配置。

具体可以参考NGINX Docs - HTTP Load Balancing小节


参考文档:


本文会经常更新,请阅读原文: https://xinyuehtx.github.io/post/Nginx%E9%85%8D%E7%BD%AE%E5%85%A5%E9%97%A8.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名黄腾霄(包含链接: https://xinyuehtx.github.io ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-02-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Nginx和Nginx配置
  • Nginx的Http配置
    • 配置反向代理
      • 配置静态文件服务
        • 配置负载均衡
        相关产品与服务
        负载均衡
        负载均衡(Cloud Load Balancer,CLB)提供安全快捷的四七层流量分发服务,访问流量经由 CLB 可以自动分配到多台后端服务器上,扩展系统的服务能力并消除单点故障。轻松应对大流量访问场景。 网关负载均衡(Gateway Load Balancer,GWLB)是运行在网络层的负载均衡。通过 GWLB 可以帮助客户部署、扩展和管理第三方虚拟设备,操作简单,安全性强。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档