Nginx(发音同“engine X”)是异步框架的网页服务器,也可以用作反向代理、负载平衡器和HTTP缓存。
客户端主动使用代理服务器连接目标服务器
客户端无感知,目标服务器使用代理,将请求分发,提高服务的并发性能
... #全局块
events { #events块
...
}
http #http块
{
... #http全局块
server #server块
{
... #server全局块
location [PATTERN] #location块
{
...
}
location [PATTERN]
{
...
}
}
server
{
...
}
... #http全局块
}
location [ = | ~ | ~* | ^~ ] uri { ... }
location @name { ... }
=:精确匹配
location = / {
#规则
}
# 则匹配到 `http://www.example.com/` 这种请求。
~:大小写敏感
location ~ /Example/ {
#规则
}
#请求示例
#http://www.example.com/Example/ [成功]
#http://www.example.com/example/ [失败]
~*:大小写忽略
location ~* /Example/ {
#规则
}
# 则会忽略 uri 部分的大小写
#http://www.example.com/Example/ [成功]
#http://www.example.com/example/ [成功]
^~:只匹配以 uri 开头
location ^~ /img/ {
#规则
}
#以 /img/ 开头的请求,都会匹配上
#http://www.example.com/img/a.jpg [成功]
#http://www.example.com/img/b.mp4 [成功]
@:nginx内部跳转
location /img/ {
error_page 404 @img_err;
}
location @img_err {
# 规则
}
#以 /img/ 开头的请求,如果链接的状态为 404。则会匹配到 @img_err 这条规则上。
反向代理
## Start www.redis.com.cn ##
server {
listen 80;
server_name www.redis.com.cn;
access_log logs/redis.access.log main;
error_log logs/redis.error.log;
root html;
index index.html index.htm index.php;
## send request back to apache ##
location / {
proxy_pass http://apachephp;
#Proxy Settings
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
proxy_max_temp_file_size 0;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
}
}
## End www.redis.com.cn ##
负载均衡
# 把www.domain.com均衡到本机不同的端口,也可以改为均衡到不同的地址上。
http {
upstream myproject {
server 127.0.0.1:8000 weight=3;
server 127.0.0.1:8001;
server 127.0.0.1:8002;
server 127.0.0.1:8003;
}
server {
listen 80;
server_name www.domain.com;
location / {
proxy_pass http://myproject;
}
}
}
动静分离
server {
listen 80;
server_name 192.168.25.35;
# 当接收到http请求时,首先host和这里的server_name进行匹配,如果匹配上,则走这个虚拟主机的location路由
# 静态资源则路由到这里
location /static/~(.*)(\.jpg|\.png|\.gif|\.jepg|\.css|\.js|\.css){
alias html;
}
# 其他的url则转发到 http://192.168.25.35:8080
location / {
proxy_pass http://192.168.25.35:8080;
}
}
原文:https://www.cnblogs.com/weiweng/p/12497306.html