【Nginx 网关开发】上手 Nginx,简简单单启动一个静态 html 页面

文章目录

  • 前言
  • 使用教程
    • [制造静态页面文件 `html`](#制造静态页面文件 html)
    • [编写配置文件 `conf`](#编写配置文件 conf)
    • [搭建 `nginx` 服务器](#搭建 nginx 服务器)

推荐一个零声教育学习教程,个人觉得老师讲得不错,分享给大家:[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 操作入门。

相关推荐
vortex52 小时前
深度字典攻击(实操笔记·红笔思考)
前端·chrome·笔记
卡里笔记2 小时前
C语言版2048小游戏
c语言
我是伪码农2 小时前
Vue 1.30
前端·javascript·vue.js
MACKEI2 小时前
服务器流式传输接口问题排查与解决方案
python·nginx·流式
Tinyundg2 小时前
Linux系统分区
linux·运维·服务器
利刃大大2 小时前
【Vue】默认插槽 && 具名插槽 && 作用域插槽
前端·javascript·vue.js
要做一个小太阳2 小时前
华为Atlas 900 A3 SuperPoD 超节点网络架构
运维·服务器·网络·华为·架构
艳阳天_.2 小时前
web 分录科目实现辅助账
开发语言·前端·javascript
梵刹古音2 小时前
【C语言】 循环结构
c语言·开发语言·算法