Nginx

Nginx

前言

正向代理:代理客户端。

反向代理:将外网的客户端请求转发至内网服务器。即代理服务端。

简介

一般由Nginx作代理服务器,拦截外网的请求并处理返回静态资源请求,再转发动态资源请求交给内网的逻辑服务器。

可以保证内网逻辑服务器的安全,可以做到负载均衡,根据需要转发请求。

程序目录

  • /usr/sbin/nginx:主程序

  • /etc/nginx:存放配置文件

  • /usr/share/nginx:存放静态文件

  • /var/log/nginx:存放日志

配置文件

Nginx服务器的配置信息主要集中在nginx.conf这个配置文件

详解

详细配置参考

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
########### 每个指令必须有分号结束。#################
#user administrator administrators; #配置用户或者组,默认为nobody nobody。
#worker_processes 2; #允许生成的进程数,默认为1
#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 1024; #最大连接数,默认为512
}

# ----http配置----
# server配置
# location配置
# upstream配置
http {
# 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 65; #连接超时时间,默认为75s,可以在http,server,location块。

upstream iii { # 这里的 iii 就是负载均衡模块的一个命名,用于在后面指定
# 服务器列表
server 127.0.0.1:8080 weight=1; # weight指定服务器轮询时的权重
server 127.0.0.1:8081 weight=3;
server 192.168.10.121:3333 backup; #热备
}

error_page 404 https://www.baidu.com; #错误页
server {
listen 80;
server_name localhost;

# 代理路径
location / {
root /etc/home/index;
index index.html index.html;
proxy_pass http://iii; # 指定负载均衡的代理名称,就是upstream的名称
}

location /admin {
}
}
server {
keepalive_requests 120; #单连接请求上限次数。
listen 4545; #监听端口
server_name 127.0.0.1; #监听地址
location ~*^.+$ { #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。
#root path; #根目录
#index vv.txt; #设置默认页
proxy_pass http://mysvr; #请求转向mysvr 定义的服务器列表
deny 127.0.0.1; #拒绝的ip
allow 172.18.5.54; #允许的ip
}
}

WSGI模式

1
2
3
4
5
# wsgi模式下的服务器配置访问方式
location / {
include /etc/nginx/uwsgi_params;
uwsgi_pass localhost:8888
}

alias与root

1
2
3
4
location /static {
# 访问/static时转到具体哪个目录
alias /root/home/proj/web_flask/flasker/ForBlueprint/static/
}
1
2
3
4
5
6
# 区别
root与alias*主要区别*在于nginx如何解释location后面的uri,这会使两者分别以不同的方式将请求映射到服务器文件上。
`root`的处理结果是:root路径+location路径
`alias`的处理结果是:使用alias路径替换location路径

* 还有一个重要的区别是alias后面必须要用“/”结束,否则会找不到文件的,而root则可有可无

Nginx
http://blog.rainna.xyz/2021/12/07/2021-12-07-Nginx/
作者
rainnalv
发布于
2021年12月7日
许可协议