Nginx反向代理与系统参数配置

蒸汽
蒸汽
发布于 2024-10-18 / 20 阅读
0
0

Nginx反向代理与系统参数配置

基础概念

Nginx内容:

  • nginx使用 conf配置

  • nginx模块开发 handler, filter, upstream

  • nginx源码 ,多进程网络 ,http状态机 ,多进程网络加锁

  • nginx基础组件,线程池,内存池,原子,共享内存,string,list,hash,array

Nginx使用场景:

  • 腾讯课堂,网易,淘宝等等

  • 主要用途就是网关

    image-20241018174848234.png

ps:对于网上下载的一些项目如何编译?

基本上分为两类:

# cmake 模式
mkdir build && cd build && cmake ..
# makefile模式
./configure && make && makeinstall

编译:

./configure --prefix=/usr/local/nginx/ --with-http_realip_module --with-http_addition_module --with-http_ssl_module --with-http_secure_link_module --with-http_stub_status_module --with-stream --with-pcre=/home/king/share/nginx/pcre-8.41 --with-zlib=/home/king/share/nginx/zlib-1.2.11 --with-openssl=/home/king/share/nginx/openssl-1.1.0g
​
make
# make:生成nginx可执行文件
​
make install
# make install :把生成的文件copy到/usr/local/nginx路径下

执行:

# 执行启动nginx路径:/usr/local/nginx
​
./sbin/nginx -c conf/nginx.conf
​
#配置命令:
# -c 
# -s restore/reload

nginx.conf

conf配置操作:

  • process

  • events

  • http

1.一进程 多端口

image-20241018184832971.png

2.多进程多端口

image-20241018185554569.png

image-20241018185616136.png

ps:

  • ps -aux:查看进程

  • netstat -aux 查看端口

conf文件解析:

conf优点:不需要代码重新编译,只需要修改参数,节省大量时间和财力

源码:

流程:

从上往下匹配解析,匹配到对应字符串后,通过空格解析出若干个tokens(动态数组),将作为参数的tokens通过或的方式进行叠加(16进制或),然后执行回调函数执行对应配置的功能。

image-20241018194223316.png

image-20241018194851095.png

惊群现象

当进程都在休眠时,有一个连接,所有进程都会被唤醒

跟踪进程: strace xxx.cc

image-20241018190715632.png

问题:nignx如何解决无效唤醒?

加锁,获得锁的进程才会把listenfd加入epoll中

给四个server加上资源后

image-20241018192328081.png

ps:关于访问ip:只有访问80时不需要显示写出端口,其他都要

nginx如何区分域名?

用 h ostname

反向代理/正向代理

反向代理:我想访问的服务器被代理了

场景:我想访问9002,但是9002被9000代理了

正向代理: 我想访问服务器我自己被代理了

场景:vpn

负载均衡:

基于反向代理,分配权重即负载均衡

9000端口分配到9002、9003

image-20241018193155684.png

加权重:

每2次9002,换一次9003

image-20241018193354812.png

问题:为什么nginx的io多路复用管理不用epoll而用宏定义?

答:image-20241018195444256.png

为了满足nginx的跨平台特性,而epoll只支持linux平台


评论