本文是记录个人学习过程,仅针对本人的设备环境。
适用人群:拥有Centos系统机器、希望用Nginx配置网络服务
阅读时长约:5min
你将获得:从零搭建Nginx服务器能力,配置反向代理
系统环境:OpenCloudOs 8.6(腾讯云轻量云服务器)
OpenCloudOS由腾讯与合作伙伴共同倡议发起,是完全中立、全面开放、安全稳定、高性能的操作系统及生态。OpenCloudOS 沉淀了多家厂商在软件和开源生态的优势,继承了腾讯在操作系统和内核层面超过10年的技术积累,在云原生、稳定性、性能、硬件支持等方面均有坚实支撑,可以平等全面地支持所有硬件平台。OpenCloudOS 8版本兼容 CentOS 8。
安装Nginx
yum install nginx
安装完后输入nginx -v
有显示Nginx的版本号,即为安装成功。
启动Nginx
nginx
就是这么朴实无华,输入完后没有报错即成功运行。随后访问云服务器的公网IP地址,可以看到这样的Nginx页面。(如果是本地机器跑的,则访问127.0.0.1)
启动完后可以看下Nginx进程ps -ef | grep nginx
➜ project ps -ef | grep nginx
root 146548 1 0 15:50 ? 00:00:00 nginx: master process nginx
nginx 146549 146548 0 15:50 ? 00:00:00 nginx: worker process
nginx 146550 146548 0 15:50 ? 00:00:00 nginx: worker process
可以看到有多个Nginx相关的进程,这是因为Nginx是多进程模式,其中master进程为Nginx的主进程,处理请求的分配,worker进程为Nginx的子进程,主要处理具体的请求。
Nginx启动相关的指令
nginx -s [signal]
signal的输入值:
- quit:优雅停止
- stop:立即停止
- reload:重载配置文件
- reopen:重新打开日志文件
Nginx配置
查看Nginx相关路径
nginx -V
注意这里V是大写。控制台中会打印Nginx配置详情,其中--prefix
参数对应的就是Nginx安装路径,--conf-path
参数对应的是Nginx配置文件路径。
先关注配置文件路径,输入cat [你的配置文件路径]
查看配置文件内容。
全局启动配置控制Nginx启动相关内容,比如
worker_processes
控制开启多少个子进程。
event子进程配置控制子进程连接相关内容,比如worker_connections
控制每个子进程的连接数量上限。
http网路配置可配置负载均衡,路由转发,反向代理等能力。如root
项就定义了Nginx的网站静态资源路径。
include
可引入其他配置文件内容,便于模块化管理。
反向代理配置
下面简单介绍下反向代理的配置方式
服务端准备
这里采用NodeJs的Koa框架快速搭建一个简单的服务端。
// 自行安装node
npm i koa
新建三个服务端文件:index.js、index1.js、index2.js。分别监听3000、3001、3002端口。
// index.js
const Koa = require('koa');
const app = new Koa();
app.use(async ctx => {
ctx.body = 'Hello World: 3000';
});
app.listen(3000);
// index1.js
const Koa = require('koa');
const app = new Koa();
app.use(async ctx => {
ctx.body = 'Hello World: 3001';
});
app.listen(3001);
// index2.js
const Koa = require('koa');
const app = new Koa();
app.use(async ctx => {
ctx.body = 'Hello World: 3002';
});
app.listen(3002);
分别在三个终端执行node index
、node index1
、node index2
,就可以成功启动三个服务。
反向代理配置
回到Nginx的配置文件中,在http
项中增加upstream [代理名称]
,里面配置对应的服务地址。
upstream backend {
server 127.0.0.1:3000 weight=3;
server 127.0.0.1:3001;
server 127.0.0.1:3002;
}
例子中backend
为反向代理配置的名称,里面是每个服务的地址。
如果服务器性能不同,可以通过weight
配置可以设置服务的权重。
随后在server
项中的location
配置代理到对应的配置中。
location /test {
proxy_pass http://backend;
}
这里就是访问/test
路径时,把请求转发到backend
这个反向代理配置中。这里的backend
需要和前面配置的反向代理名称保持一致。
随后执行nginx -s reload
重载nginx配置,浏览器访问几次/test
路径,可以看到返回的内容会不一样,证明每次访问都由不同端口下的服务器处理,配置成功。
最终配置如下:
更多反向代理相关配置参考官方文档