【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 操作入门。

相关推荐
两点王爷17 小时前
一个快速加载面和多面数据的html测试页面(可以导出geojson数据文件)
前端·html·gis
热爱前端的小张17 小时前
第四章 接口和类型兼容性
前端
hunterandroid17 小时前
[鸿蒙从零到一] HarmonyOS 资源管理与多语言适配实战
前端
用户693717500138418 小时前
Claude Code终端日志Token占用实测:一个过滤器砍掉60%-90%
android·前端·后端
AOwhisky18 小时前
Python 学习笔记(第十三期)——运维自动化(下·前篇):远程命令执行——paramiko基础篇
运维·python·学习·云原生·自动化·运维开发·paramiko
无人生还18 小时前
第 1 篇:从 Vue3 到 React 的思维转变
前端·vue.js·react.js
AOwhisky18 小时前
Python 学习笔记(第十四期)——运维自动化(下·中篇):远程文件传输——paramiko进阶篇
运维·python·学习·云原生·自动化·文件传输·paramiko
爱分享的程序猿-Clark18 小时前
【前端分享】vue开发项目,如何实现 从A页面跳转到B页面,并传值!
前端·javascript·vue.js
imc.1119 小时前
linux基础IO
linux·运维·服务器
躺不平的理查德19 小时前
让Ubuntu 的第二块网卡 ens37 永久固定为 192.168.30.111
运维·服务器