Openresty高性能网关反向代理配置攻略

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

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
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

代码语言:javascript
复制
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;
}
}