文章目录
- 前言
- 使用教程
-
- [制造静态页面文件 `html`](#制造静态页面文件
html) - [编写配置文件 `conf`](#编写配置文件
conf) - [搭建 `nginx` 服务器](#搭建
nginx服务器)
- [制造静态页面文件 `html`](#制造静态页面文件
推荐一个零声教育学习教程,个人觉得老师讲得不错,分享给大家:[Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,TCP/IP,协程,DPDK等技术内容,点击立即学习: https://github.com/0voice 链接。
前言
Nginx(发音为engine-x)是一个异步事件驱动架构的高性能HTTP及反向代理服务器,同时提供IMAP/POP3代理服务。其核心架构采用多进程模型(主进程+工作进程)与非阻塞 I/O 事件处理机制,通过epoll/kqueue/IOCP等系统调用实现高并发连接处理能力。
什么是反向代理?即后端服务器被代理了
什么是正向代理?即客户端被代理了

但是这个中间件该怎么使用呢?作为初学者的我,犯了难。
使用教程
我们先在 GitHub 上下载一个低版本的 Nginx(比如 nginx-1.22.1),请自行下载。


这个脚本软件的使用方法如下(在对应文件路径的终端)
bash
./configure --prefix=/usr/local/nginx --with-http_realip_module\
--with-http_addition_module --with-http_ssl_module --with-http_gzip_static_module\
--with-http_secure_link_module --with-http_stub_status_module --with-stream\
--with-pcre=/home/qiming/share/CTASK/Middle-Ware/nginx/pcre-8.45\
--with-zlib=/home/qiming/share/CTASK/Middle-Ware/nginx/zlib-1.2.13\
--with-openssl=/home/qiming/share/CTASK/Middle-Ware/nginx/openssl-1.1.1s
我们仔细看这段代码,分别有 ./configure 和一系列的模块添加选项 --with-...,其中还有三个自定义的模块添加选项,添加的正是本路径下的源码,openssl 是用于加密的,pcre 是用于正则表达式,zlib 适用于数据压缩的。
bash
--with-pcre=/home/qiming/share/CTASK/Middle-Ware/nginx/pcre-8.45\
--with-zlib=/home/qiming/share/CTASK/Middle-Ware/nginx/zlib-1.2.13\
--with-openssl=/home/qiming/share/CTASK/Middle-Ware/nginx/openssl-1.1.1s

现在不需要搞懂这些模块,我们无脑冲就行了(添加所需要的模块,如果以后还需要添加新模块,还可以继续构造编译,重新安装,只是把这个过程给重复一遍而已)
bash
qiming@k8s-master1:~/share/CTASK/Middle-Ware/nginx$ ./configure --prefix=/usr/local/nginx --with-http_realip_module\
--with-http_addition_module --with-http_ssl_module --with-http_gzip_static_module\
--with-http_secure_link_module --with-http_stub_status_module --with-stream\
--with-pcre=/home/qiming/share/CTASK/Middle-Ware/nginx/pcre-8.45\
--with-zlib=/home/qiming/share/CTASK/Middle-Ware/nginx/zlib-1.2.13\
--with-openssl=/home/qiming/share/CTASK/Middle-Ware/nginx/openssl-1.1.1s
之后,生成构造文件 Makefile

无脑构造项目,下载可执行文件到系统,依次执行下面三个文件
bash
sudo su
make
make install
大家去各自的系统文件里面便可发现多了 nginx 文件夹
bash
qiming@k8s-master1:/usr/local$ ls
bin etc games go include lib man nginx sbin share src
该 nginx 文件夹里面还有 nginx/sbin 可执行文件夹,nginx/conf 是执行文件的配置文件
bash
qiming@k8s-master1:/usr/local$ cd nginx/
qiming@k8s-master1:/usr/local/nginx$ ls
client_body_temp conf fastcgi_temp html logs proxy_temp sbin scgi_temp uwsgi_temp
制造静态页面文件 html
我写了 4 个静态前端文件,我只显示其中之一,表示我将开启 4 个端口处理 nginx 的服务,分别是端口 9000、9001、9002 和 9003.
html
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>nginx html in 192.168.152.128:9000</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>

这四个文件夹放在系统目录 /usr/local/ngin/html 里面
编写配置文件 conf
上面的 html 文件,以及此处的 conf 文件都需要放在 /usr/local/ngin 的子目录里面,为什么这样?因为用户的限制,/usr/local/ngin 这个路径下的用户是 "nginx" 而非 "qiming",放到其他路径下无法正常访问。
proxy_pass 正是代理服务的关键字,upstream 是服务集群的负载均衡关键字
shell
worker_processes 2;
events {
worker_connections 1024;
}
http {
upstream backend {
server 192.168.152.128:9002 weight=1;
server 192.168.152.128:9003 weight=2;
}
server {
listen 9000;
location / {
proxy_pass http://backend;
}
}
server {
listen 9001;
location / {
proxy_pass http://backend;
}
}
server {
listen 9002;
location / {
root html/html9002/;
}
}
server {
listen 9003;
location / {
root html/html9003/;
}
}
}
这个配置文件放在 /usr/local/ngin/conf 里面
搭建 nginx 服务器
用超级用户权限,不会有那么多麻烦
bash
qiming@k8s-master1:/usr/local/nginx$ sudo su
[sudo] password for qiming:
root@k8s-master1:/usr/local/nginx# ./sbin/nginx -s stop
root@k8s-master1:/usr/local/nginx# ./sbin/nginx -c ./conf/ming.conf
root@k8s-master1:/usr/local/nginx# ./sbin/nginx -s reload
我们综合看配置文件和 nginx 的运行规律,大家结合我的配置文件里面一看,就发现端倪了,负载均衡是每访问 192.168.152.128:9002 1 次,就会切换到 192.168.152.128:9003,对于 192.168.152.128:9003 相应地有每访问 2 次就会切换到 192.168.152.128:9002

Nginx 其实就是一个反向代理组件,为真正的后端服务器代理,即使不是一个服务器,也可以是一个前端页面。
我们可以查看一下,我们的 nginx 到底有没有运行。

我们可以对比一下 html 文件,以及不断点击蓝色标记的圈圈刷新按钮,就会发现负载均衡的现象,以及 html 的语法格式了。
于是,我们便完成了,一个相当之简单 Nginx 操作入门。