反向代理
反向代理是一种常见的网络技术,它可以将客户端的请求转发到服务器群集中的一个或多个后端服务器上进行处理,并将响应结果返回给客户端。反向代理技术通常用于提高网站的可伸缩性和可用性,并且可以隐藏真实的后端服务器地址。
#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 utf-8;
# access_log logs/host.access.log main;
location / {
#反向代理的url
proxy_pass http://www.baidu.com/;
}
}
}
访问localhost:80
跳转到百度
负载均衡
负载均衡是一种常见的网络技术,用于将流量在多个服务器之间平均分配,以提高系统的性能、可伸缩性和可靠性。负载均衡器(Load Balancer)作为中间层,接收来自客户端的请求,并将请求转发到后端的多个服务器上进行处理。
#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;
upstream httpd {
server 192.168.2.1:81 weight=10 down;
server 192.168.2.3:80 weight=1;
server 192.168.2.4:80 weight=1 backup;
}
server {
listen 80;
server_name localhost;
#默认编码
charset utf-8;
# access_log logs/host.access.log main;
location / {
#反向代理的url
proxy_pass http://httpd;
}
}
server {
listen 81;
server_name localhost;
#默认编码
charset utf-8;
# access_log logs/host.access.log main;
location / {
root html;
#定义首页文件的名字
index index.html index.htm;
}
}
}
- down:表示当前的server暂时不参与负载
- weight:默认为1.weight越大,负载的权重就越大。
- backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。
动静分离
动静分离方面有着广泛应用。使用Nginx进行动静分离可以提高网站的性能和可伸缩性,并减轻后端服务器的压力。
#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;
upstream httpd {
server 192.168.2.1:81 weight=10 down;
server 192.168.2.3:80 weight=1;
server 192.168.2.4:80 weight=1 backup;
}
server {
listen 80;
server_name localhost;
#默认编码
charset utf-8;
# access_log logs/host.access.log main;
location / {
#反向代理的url
proxy_pass http://httpd;
}
# 静态资源
location /css {
root /usr/local/nginx/static;
index index.html index.htm;
}
location /images {
root /usr/local/nginx/static;
index index.html index.htm;
}
location /js {
root /usr/local/nginx/static;
index index.html index.htm;
}
}
server {
listen 81;
server_name localhost;
#默认编码
charset utf-8;
# access_log logs/host.access.log main;
location / {
root html;
#定义首页文件的名字
index index.html index.htm;
}
}
}