由于edx服务器环境搭建难度相当变态,而且我只负责前端开发,所以就不想搭建本地的edx环境。但是开发过程难免有需要用到后端服务的情况,以前写过一个前端调试器可以模拟部分行为,但是像有些功能脱离后端用不了,如验证码校验。为了解决这两个矛盾,我使用了nginx反向代理功能。
我的想法是: 0. 只要是我能访问到的后端服务器,都能成为我本地服务器后端资源的一部分 0. 我能够自由选择使用哪一个后端服务器,比如开发服,或者局域网内同事的本地服务器 0. 本地服务器返回结果前有个判断,如果本地存在静态文件则使用本地文件,否则转发请求到目标服务器返回结果
基于目前可用的外部服务器资源有三个,开发服,同事steven的本地机器,正服,所以最终我在nginx.conf增加这样一段配置:
server {
listen 80;
autoindex on;
server_name ~^(?<domain>steven|develop|publish).edx;
charset utf-8;
root d:\\xxx\\edxroot\\$domain\\;
location / {
set $flag 0;
# 转发规则:
# 1. 本地文件不存在
if ( !-e $request_filename){ set $flag 1; }
# 2. 访问路径是目录
if ( $uri ~ /$ ){ set $flag 1; }
if ( $uri = "/forum/2/new" ){ # 特殊地址返回text/html头部
add_header Content-Type text/html;
}
set $flag "${domain}${flag}";
if ( $flag = "steven1" ){
proxy_pass http://10.26.123.33:8000; # steven的机器
}
if ( $flag = "develop1" ){
proxy_pass http://10.19.119.12; # 开发服
}
if ( $flag = "publish1" ){
proxy_pass http://www.xxx.cn; # 正服
}
}
}
相关文档
随便看看
畅言模块加载中