nginx.conf

本文大纲
  1. 1. 方式一
  2. 2. 方式二
  3. 3. 原始conf

 

方式一

静态资源逐个指定后缀代理至本地,api代理至其它。本地经由8000端口又转了一下,依据不同项目名指向本地不同文件夹。

代码折叠 代码展开
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
#user  nobody;                                    #配置用户或者组,默认为nobody nobody。
worker_processes 1; #允许生成的进程数,默认为1,在master/worker运行方式下 worker进程的数目,一般情况下用户要配置与CPU内核数相等的worker进程
#error_log logs/error.log; #制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别依次为:debug|info|notice|warn|error|crit|alert|emerg
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid; #指定nginx进程运行文件存放地址
#daemon on | off 默认on #是否以守护进程的方式运行nginx,守护进程是指脱离终端并且在后头运行的进程,关闭守护进程执行的方式可以让我们方便调试nginx
#master_process on | off 默认on #是否以master/worker方式进行工作,在实际的环境中 nginx是以一个master进程管理多个worker进程的方式运行的,关闭后 nginx就不会fork出worker子进程来处理请求,而是用master进程自身来处理请求
#worker_cpu_affinity 1000 0100 0010 0001; #worker_cpu_affinity cpumask[cpumask…],绑定worker进程到指定的cpu内核,每一个worker进程都独享一个CPU,可以在内核的调度策略上实现完全的并发

events { #events模块包含了nginx了有关连接处理的配置
worker_connections 1024; #最大连接数,默认为512,设置一个worker能够同时打开的最大连接数,该值最大为worker_rlimit_nofile的值,在nginx作为http服务器的时候,最大连接数为worker_processes * worker_connctions,在nginx作为反向代理服务器的时候,最大连接数为worker_processes * worker_connections / 2

#accept_mutex on; #设置网路连接序列化,防止惊群现象发生,默认为on
#multi_accept on; #设置一个进程是否同时接受多个网络连接,默认为off
#use epoll; #设置用于客户端线程的轮询方式,默认nginx会选择一个最适合你操作系统的.事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
}



http { #http模块下配置有server location upstream等不同的内容
include mime.types; #文件扩展名与文件类型映射表
default_type application/octet-stream; #默认文件类型,默认为text/plain

#log_format myFormat '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"'; #用于设置日志的记录格式,当nginx位于负载均衡设备,反向代理服务器之后的时候,无法直接获得客户端真实的ip,但是反向代理服务器转发的http头信息中,可以增加X-Forwarded-For信息,记录原有的客户端ip地址 和原来客户端请求的服务器地址,这个时候可以通过log_format指令来设置日志格式,将X-Forwarded-For信息打入日志中

#access_log off; #取消服务日志
#access_log logs/access.log myFormat; #combined为日志格式的默认值

sendfile on; #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。
#tcp_nopush on;
#sendfile_max_chunk 100k; #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。

keepalive_timeout 65; #连接超时时间,默认为75s,可以在http,server,location块。

#gzip on;

#error_page 404 https://www.baidu.com; #错误页


upstream dfb3 { #Upstream模块是与反向代理,负载均衡相关的模块
#指定了一个叫dfb3的代理服务器,可以在proxy_pass和fastcgi_pass中使用,默认的负载均衡方式为加权轮询,可以在配置项使用使用ip_hash来使用ip哈希
#weight指定了每个server的权重默认是1
#server 127.0.0.1:8080 max_fails=3 fail_timeout=30s; #max_fails指定了在fail_timeout(默认是60s)内对后端服务器请求失败的次数,达到次数后会在fail_timeout时间内不再去查询它
#----------------------------------------------------------------------------------------------
#测试 ultimate
#server www.xxx.com weight=5;
#开发 Dev
#server 192.168.1.50:80 weight=5;
#准上线 STG
#server www.zzzz.com weight=5;
#某某
#server 192.168.1.121:80 weight=5;
#----------------------------------------------------------------------------------------------
}

upstream staticservice {
server 127.0.0.1:8000;
}

server {
listen 8080; #监听端口
server_name localhost; #监听地址 ,由于IP地址的数量有限,因此经常存在多个主机域名对应同一个ip的情况,这个时候可以按照server_name通过server块来定义虚拟主机,每个server块是一个虚拟主机,处理满足相应listen端口,和server_name的请求
#server_name与host的匹配优先级如下
#首先选中所有字符串完全匹配的server_name,如www.nginx.org
#其次选中通配符在前面的server_name,如*.nginx.org
#再次选择通配符在后面的server_name,如www.nginx.*
#最后选择使用正则表达式才匹配的server_name,如~^\.testweb\.com$
#keepalive_requests 120; #单连接请求上限次数。

#charset koi8-r;

#access_log logs/host.access.log myFormat;

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js|css|html|eot|svg|ttf|woff|ico|xlsx)$ { #location会尝试根据用户请求中的URI来匹配设置的表达式 并选中最终结果中的配置来处理用户的请求。
#location [=|~|~*|^~|@] / uri / { … } =表示把uri作为字符串,与参数中的URI作完全匹配
#~进行正则表达式匹配的时候,区分大小写
#~*进行正则表达式匹配的时候,不区分大小写
#^~表示匹配URI的时候,如果该location是最佳匹配,那么对于匹配这个location的字符串不在进行正则表达式的匹配检测
#@表示仅用于nginx服务内部请求之间的重定向,带有@的location不直接处理用户请求
#匹配的优先级如下
#1、如果查询精确的命中了一个使用=前缀的location,那个它将被使用,并结束匹配
#2、在剩下普通字符串中,将按照最大前缀匹配的原则进行匹配,将结果最后候选结果,如果最终命中的结果使用了^~前缀表示或者它是一个完全匹配,那么它将被使用,并结束匹配
#3、正则表达式匹配时,按照正则表达式在配置文件中出现的顺序,并且只有匹配到了一条正则local,就不在匹配下面的local了
#4、如果步骤3命中了一个匹配,那个它将被使用,否则将使用步骤2的候选结果
#(普通字符串和正则字符串的区别 ~和~*前缀表示location是正则字符串,其他前缀和无前缀表示location是普通字符串)
root html/; #根目录
#index vv.txt; #设置默认页
#deny 127.0.0.1; #拒绝的ip
#allow 172.18.5.54; #允许的ip
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Accept-Encoding "none";
proxy_ignore_headers "Cache-Control" "Expires";
#expires 3d;
if ( !-e $request_filename ){
proxy_pass http://staticservice; #请求转向staticservice 定义的服务器列表
}
}

location / {
proxy_pass http://dfb3/;
}
}

server {
listen 8000;
server_name 0.0.0.0;

location / {
root E:/workSpace/xxx/yyy/aaa/main;
index mainFrame.html;
}
location /goods/ {
root E:/workSpace/xxx/yyy/bbb/main;
}
location /afddd-mmu/ {
root E:/workSpace/xxx/yyy/ccc/main;
}
location ~ /xlljj-ii/ {
root E:/workSpace/xxx/yyy/ddd/main;
index main.html;
}
}
}



#每个指令必须有分号结束。
#惊群现象: 一个网路连接到来,多个睡眠的进程被同时叫醒,但只有一个进程能获得链接,这样会影响系统性能。
#1.$remote_addr 与 $http_x_forwarded_for 用以记录客户端的ip地址;
#2.$remote_user : 用来记录客户端用户名称;
#3.$time_local : 用来记录访问时间与时区;
#4.$request : 用来记录请求的url与http协议;
#5.$status : 用来记录请求状态;成功是200,
#6.$body_bytes_s ent : 记录发送给客户端文件主体内容大小;
#7.$http_referer : 用来记录从那个页面链接访问过来的
#8.$http_user_agent : 记录客户端浏览器的相关信息;

方式二

启5000访问,,静态文件代理至本地已启服务器8001,api代理至其它。

代码折叠 代码展开
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# 启动:nginx || start nginx
# 停止:nginx -s stop || nginx -s quit //stop是快速停止nginx,可能并不保存相关信息;quit是完整有序的停止nginx,并保存相关信息
# 重载:nginx -s reload
# 版本:nginx -v
# 检查配置:nginx -t
# reopen log:nginx -s reopen

#user nobody; #配置用户或者组,默认为nobody nobody。
worker_processes 1; #允许生成的进程数,默认为1,在master/worker运行方式下 worker进程的数目,一般情况下用户要配置与CPU内核数相等的worker进程
#error_log logs/error.log; #制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别依次为:debug|info|notice|warn|error|crit|alert|emerg
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid; #指定nginx进程运行文件存放地址
#daemon on | off 默认on #是否以守护进程的方式运行nginx,守护进程是指脱离终端并且在后头运行的进程,关闭守护进程执行的方式可以让我们方便调试nginx
#master_process on | off 默认on #是否以master/worker方式进行工作,在实际的环境中 nginx是以一个master进程管理多个worker进程的方式运行的,关闭后 nginx就不会fork出worker子进程来处理请求,而是用master进程自身来处理请求
#worker_cpu_affinity 1000 0100 0010 0001; #worker_cpu_affinity cpumask[cpumask…],绑定worker进程到指定的cpu内核,每一个worker进程都独享一个CPU,可以在内核的调度策略上实现完全的并发

events { #events模块包含了nginx了有关连接处理的配置
worker_connections 1024; #最大连接数,默认为512,设置一个worker能够同时打开的最大连接数,该值最大为worker_rlimit_nofile的值,在nginx作为http服务器的时候,最大连接数为worker_processes * worker_connctions,在nginx作为反向代理服务器的时候,最大连接数为worker_processes * worker_connections / 2

#accept_mutex on; #设置网路连接序列化,防止惊群现象发生,默认为on
#multi_accept on; #设置一个进程是否同时接受多个网络连接,默认为off
#use epoll; #设置用于客户端线程的轮询方式,默认nginx会选择一个最适合你操作系统的.事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
}



http { #http模块下配置有server location upstream等不同的内容
include mime.types; #文件扩展名与文件类型映射表
default_type application/octet-stream; #默认文件类型,默认为text/plain

#log_format myFormat '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"'; #用于设置日志的记录格式,当nginx位于负载均衡设备,反向代理服务器之后的时候,无法直接获得客户端真实的ip,但是反向代理服务器转发的http头信息中,可以增加X-Forwarded-For信息,记录原有的客户端ip地址 和原来客户端请求的服务器地址,这个时候可以通过log_format指令来设置日志格式,将X-Forwarded-For信息打入日志中

#access_log off; #取消服务日志
#access_log logs/access.log myFormat; #combined为日志格式的默认值

sendfile on; #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。
#tcp_nopush on;
#sendfile_max_chunk 100k; #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。

keepalive_timeout 65; #连接超时时间,默认为75s,可以在http,server,location块。

#gzip on;

#error_page 404 https://www.baidu.com; #错误页


#Upstream模块是与反向代理,负载均衡相关的模块
upstream firstdemo {
#ip_hash; #ip_hash它的作用是如果第一次访问该服务器后就记录,之后再访问都是该服务器了
server 39.106.145.33;
server 47.93.6.93;
}

server{

listen 5000;
server_name localhost5000;

location /{
# proxy_pass http://192.168.0.105:8001; #公司
proxy_pass http://192.168.1.3:8001; #家
}

location /jinqiao{
proxy_pass http://59.110.24.201/jinqiao;
# proxy_pass http://vjpeng.s1.natapp.cc/jinqiao;
}

location /kouqiang{
proxy_pass http://59.110.24.201/kouqiang;
# proxy_pass http://vjpeng.s1.natapp.cc/kouqiang;
}

location /sth {
proxy_pass http://firstdemo;
}
}


}

原始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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120


#user nobody;
worker_processes 1;

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid logs/nginx.pid;


events {
worker_connections 1024;
}


http {
include mime.types;
default_type application/octet-stream;

#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';

#access_log logs/access.log main;

sendfile on;
#tcp_nopush on;

#keepalive_timeout 0;
keepalive_timeout 65;

#gzip on;

server {
listen 80;
server_name localhost;

#charset koi8-r;

#access_log logs/host.access.log main;

location / {
root html;
index index.html index.htm;
}

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}


# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;

# location / {
# root html;
# index index.html index.htm;
# }
#}


# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;

# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;

# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;

# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;

# location / {
# root html;
# index index.html index.htm;
# }
#}

}