Nginx 简单记录

时间:2023-03-09 04:29:48
Nginx 简单记录

Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。官方测试能够支持5W并发连接,资源消耗低且稳定

正向代理

客户端和目标服务两者之间通过代理间接连接。客户端只需向代理服务器发起请求,并指定自己的目标服务(进行一些设置),由代理转交给指定的目标服务,
同时目标服务器返回的内容转接给代理,由代理返回给客户端,此时目标服务不知道请求的客户端是谁。

反向代理

和正向代理相反,客户端并不能知道反向代理的存在,自己请求的代理服务器对于客户端来说就是自己的目标服务(代理对外表现为目标服务器),客户端不需要进行特别的任何设置就可以反问,由代理决定
向哪台服务器转交请求(转接真实服务器)。

总的说:

一个是代理客户端,为客户端收发请求,使真实客户端对服务器不可见。
一个是代理服务器,为服务器收发请求,使真实服务器对客户端不可见。

负载均衡

Nginx的应用就是实现负载均衡,nginx扮演了反向代理服务器的角色, 将请求数量按照一定的规则进行分发到不同的服务器处理的规则,就是一种均衡规则

下载安装

官网:https://nginx.org/en/download.html, 下载window版本

启动nginx:

1) 直接双击该目录下的nginx.exe,即可启动nginx服务器

2) 命令行进入该文件夹,执行nginx命令,也会直接启动nginx服务器

如:

D:/resp_applicationinx-1.13.> nginx 

关闭nginx:

1) 强制停止nginx服务器,如果有未处理的数据,丢弃
D:/resp_applicationinx-1.13.> nginx -s stop
2) 优雅的停止nginx服务器,如果有未处理的数据,等待处理完成之后停止
D:/resp_applicationinx-1.13.> nginx -s quit 

常见配置

配置文件目录:conf/nginx.conf

配置说明:

......                              # 用于进行nginx全局信息的配置

events {                            # nginx工作模式配置

}

http {                              # http设置
.... server { # 服务器主机配置
....
location { # 路由配置
....
} location path {
....
} location otherpath {
....
}
} server {
.... location {
....
}
} upstream name { # 负载均衡配置
....
}
}

配置实例:

########### 每个指令必须有分号结束。#################
#worker_processes ; #允许生成的进程数,默认为1可以等于CPU核心数
#pid /nginx/pid/nginx.pid; #指定nginx进程运行文件存放地址
error_log log/error.log debug; #制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg
events {
accept_mutex on; #设置网路连接序列化,防止惊群现象发生,默认为on
multi_accept on; #设置一个进程是否同时接受多个网络连接,默认为off
#use epoll; #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
worker_connections ; #最大连接数,默认为512
}
http {
include mime.types;               #文件扩展名与文件类型映射表
default_type application/octet-stream;        #默认文件类型,默认为text/plain
#access_log off;                     #取消服务日志
log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定义格式
access_log log/access.log myFormat;          #combined为日志格式的默认值
sendfile on; #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。
sendfile_max_chunk 100k; #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。
keepalive_timeout ; #连接超时时间,默认为75s,可以在http,server,location块。 upstream mysvr {
server 127.0.0.1:7878 weight=1;
server 127.0.0.2:7878 weight=2; #weight表示权值,越高分配的概率越大
server 127.0.0.3.7878 down; #down 表示主机暂停服务
}
error_page https://www.baidu.com; #错误页
server {
keepalive_requests ; #单连接请求上限次数。
listen ; #监听端口
server_name 127.0.0.1; #监听地址
location ~*^.+$ { #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。
#root path; #根目录
#index vv.txt; #设置默认页
proxy_pass http://mysvr; #请求转向mysvr 定义的服务器列表 必须和upstream 后面的名字一样
deny 127.0.0.1; #拒绝的ip
allow 172.18.5.54; #允许的ip
}
}
}

简单示例

访问127.0.0.1:8001  被转向了预先部署好的2个站点 127.0.0.1:8022  和127.0.0.1:8033

Nginx 简单记录

Nginx 简单记录