反向代理是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
使用nginx反向代理主要是分发用户请求,将用户请求分发到合适的服务器上,使用同一域名访问不同系统。结构如下:
下载nginx稳定版,官网下载。 下载解压如下:
打开CMD,输入 start nginx 启动nginx后,网页输入localhost出现 Welcome to nginx,nginx启动成功。
配置nginx的配置文件(conf/nginx.conf)(简单使用静态文件)
#user somebody;
#启动进程,通常设置成和cpu的数量相等
worker_processes 1;
#全局错误日志
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#PID文件,记录当前启动的nginx的进程ID
#pid logs/nginx.pid;
#工作模式及连接数上限
events {
worker_connections 1024; #单个后台worker process进程的最大并发链接数
}
#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
#设定mime类型(邮件支持类型),类型由mime.types文件定义
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;
rewrite_log on;
sendfile on;
#tcp_nopush on;
#连接超时时间
keepalive_timeout 120;
tcp_nodelay on;
#gzip压缩开关
#gzip on;
#HTTP服务器
server {
listen 80; #监听80端口,80端口是知名端口号,用于HTTP协议
server_name image.hello.com; #定义使用www.xx.com访问
#charset koi8-r;
#access_log logs/host.access.log main;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
root F:\temp\image; #静态文件位置
}
}
}
保存后,在命令行输入 nginx -s reload,重载配置 。
在目录下放一张图片后,更改 host:在 C:\Windows\System32\drivers\etc 目录下的hosts文件中添加一条 DNS 记录
127.0.0.1 image.hello.com
在网页上输入 http://image.hello.com/beauty.jpeg 即可访问到该图片
所以最主要的是配置相关的 server, 可以配置多个server,注意端口
server {
listen 80;
server_name manage.hello.com;
#charset koi8-r;
#access_log logs/host.access.log main;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
proxy_pass http://127.0.0.1:8081;
proxy_connect_timeout 600;
proxy_read_timeout 600;
}
}
server {
listen 80;
server_name admin.hello.com;
#charset koi8-r;
#access_log logs/host.access.log main;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
proxy_pass http://127.0.0.1:8082;
proxy_connect_timeout 600;
proxy_read_timeout 600;
}
}
hosts文件中添加两条 DNS 记录, 注意web启动绑定的端口要和nginx中的 配置的端口保持一致。
即可通过域名访问不同的系统。