qidao123.com技术社区-IT企服评测·应用市场

标题: Nginx 学习笔记 [打印本页]

作者: 万有斥力    时间: 2023-6-17 17:52
标题: Nginx 学习笔记
概述

Nginx 是一个高性能的 HTTP 和反向代理服务器,特点是占用内存少,并发能力强
1. 正向代理

如果把局域网外的 Internet 想象成一个巨大的资源库,则局域网中的客户端要访问 Internet,需要通过代理服务器来访问,这种访问就称为正向代理

2. 反向代理

客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,再返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器 IP 地址
3. 负载均衡

增加服务器的数量,然后将请求分发到各个服务器上,将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,将负载分发到不同的服务器
4. 动静分离

简单来说就是把动态请求跟静态请求分开,不能单纯地理解为动态页面和静态页面分类。一般使用 Nginx 处理静态页面,Tomcat 处理动态页面
动静分离有两种实现:

Nginx 操作命令
  1. # 必须先进入 nginx 目录
  2. cd /usr/local/nginx/sbin
  3. # 查看 nginx 版本号
  4. ./nginx -v
  5. # 启动 nginx
  6. ./nginx -s start
  7. # 关闭 nginx
  8. ./nginx -s stop
  9. # 重新加载 nginx(修改了配置文件)
  10. ./nginx -s reload
复制代码
Nginx 配置文件

Linux 下 Nginx 配置文件路径一般如下:
  1. /usr/local/nginx/conf/nginx.conf
复制代码
组成部分:
  1. # 全局块
  2. ...
  3. # events 块
  4. events {
  5.         ...
  6. }
  7. # http 块
  8. http {
  9.         # http 全局块
  10.         ...
  11.        
  12.         # server 块
  13.         server {
  14.                 # 全局 server 块
  15.                 ...
  16.                
  17.                 # location 块
  18.                 location /uri-string {
  19.                         ...
  20.                 }
  21.         }
  22.        
  23.         ...
  24. }
复制代码

Nginx 配置实例

1. 反向代理

启动 Tomcat 并开发对外端口,配置 nginx.conf
  1. server {
  2.         ...
  3.         server_name [IP地址]
  4.         ...
  5.         location / {
  6.                 ...
  7.                 proxy_pass http://127.0.0.1:8080
  8.                 ...
  9.         }
  10. }
复制代码
启动两个 Tomcat 并分发不同的对外端口,根据访问路径跳转到不同端口的服务
  1. server {
  2.         listen 9001     # 监听端口
  3.         server_name [IP地址]
  4.         location ~/edu/ {   # 正则表达式写法,匹配符合条件的路径
  5.                 ...
  6.                 proxy_pass http://127.0.0.1:8080
  7.                 ...
  8.         }
  9.         location ~/vod/ {   # 正则表达式写法,匹配符合条件的路径
  10.                 ...
  11.                 proxy_pass http://127.0.0.1:8081
  12.                 ...
  13.         }
  14. }
复制代码
2. 负载均衡

启动两个 Tomcat 并分发不同的对外端口,配置 nginx.conf
  1. http {
  2.         ...
  3.         upstream myserver {
  4.                 # ip_hash
  5.                 # fair
  6.                 server 192.168.17.219:8080  # 第一个ip:port
  7.                 # server 192.168.17.219:8080 weight=1   # 分配权重
  8.                 server 192.168.17.219:8081  # 第二个ip:port
  9.         }
  10.         ...
  11.         server {
  12.                 listen 80     # 监听端口
  13.                 server_name 192.168.17.219  # IP地址
  14.                 location / {
  15.                         ...
  16.                          proxy_pass http://myserver
  17.                          ...
  18.         }
  19.         }
  20. }
复制代码
分配方式:
3. 分配方式

配置 nginx.conf
  1. server {
  2.         listen 80     # 监听端口
  3.         server_name 192.168.17.219  # IP地址
  4.         location /www/ {    # 正则表达式
  5.                 ...
  6.                 root /data/;    # 静态资源路径
  7.                 index index.htm index.html
  8.                 ...
  9.         }
  10.         location /image/ {
  11.                 root /data/;
  12.                 autoindex on    # 返回文件目录内容
  13.         }
  14. }
复制代码
Nginx 原理解析

1. master-workers

每个 worker 都是独立的进程,不需要加锁,不会影响其他 worker。每个 worker 都可以把 cpu 的性能发挥到极致,因此 worker 数量最好与 cpu 数相同
可以热部署,正在工作的 worker 完成工作后再加载,其他 worker 立即重新加载

2. 连接数 worker-connection

一个请求占用 worker 两个(一去一回)或四个连接数(需要访问 Tomcat)。每个 worker 支持最大的连接数是 1024,支持的最大并发数是 4*1024/2 或者 4*1024/4

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 qidao123.com技术社区-IT企服评测·应用市场 (https://dis.qidao123.com/) Powered by Discuz! X3.4