Openresty高性能网关反向代理配置攻略
介绍
反向代理就是当请求访问你的代理服务器时,代理服务器会对你的请求进行转发,可以转发到静态的资源路径上去,也可以转发到动态的服务接口上去。下面我们以对域名进行代理为例,来讲讲如何进行静态代理和动态代理。
举个例子,一个用户访问http://www.example.com/readme,但是www.example.com上并不存在readme页面,它是偷偷从另外一台服务器上取回来,然后作为自己的内容返回给用户。但是用户并不知情这个过程。对用户来说,就像是直接从www.example.com获取readme页面一样。这里所提到的www.example.com这个域名对应的服务器就设置了反向代理功能。
反向代理服务器,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容原本就是它自己的一样。
「如下图所示:」
静态代理
静态代理就是将请求代理到不同的静态资源路径上去,这里我们将对docs.tinywan.com
的请求代理到我的文档项目中,对mall.tinywan.com
的请求代理到mall
的前端项目中。
文档项目反向代理
docs.conf
server { listen 80; server_name docs.tinywan.com; #修改域名
location / { root /usr/share/nginx/html/docs; #代理到docs文件夹中 index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; }
}
通过docs.tinywan.com
即可访问到我们的文档项目了
前端项目反向代理
mall.conf
server {
listen 80;
server_name mall.tinywan.com; #修改域名location / { root /usr/share/nginx/html/mall; #代理到mall文件夹中 index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; }
}
通过mall.tinywan.com
即可访问到mall的前端项目了
动态代理
动态代理就是把代理服务器的请求转发到另一个服务上去,这里我们将对api.tinywan.com
的请求代理到mall-admin
的后台服务上去。
API接口动态代理(Java)
api.conf
server {
listen 80;
server_name api.tinywan.com; #修改域名location / { proxy_pass http://120.27.63.9:8080; #修改为代理服务地址 index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; }
}
重启动nginx服务后,通过api.tinywan.com/swagger-ui.html
即可访问到mall-admin的API文档页面了
API接口动态代理(PHP)
api.conf
server {
listen 80;
server_name api.tinywan.com; #修改域名set $root_path /home/www/web/api.tinywan.com/public; #修改项目路径
root $root_path;
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=/$1 last;
break;
}
}
location ~ .php$ {
fastcgi_pass unix:/var/run/php-fpm.sock; # 基于Socket 的TCP 代理
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME document_rootfastcgi_script_name;
include fastcgi_params;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
}
}