这周要上线一个项目,有台服务器是内网的所以弄起来比较复杂,搞了好几天才搞好,讲下需求以及解决方案。
客户的其它机器都是在内网环境下的,不可访问外网,a(58.212.225.181)为内网服务器,可通过网闸请求到一台外网服务器c(192.168.158.211),因为网站有很多的外链图片,以及接口请求,把所有的图片都抓回来当然也是可以的,但是我觉得用代理的方式解决更好一些,况且很多接口也是必须要请求外网的,这个时候就要想办法通过代理来出去了。
1
| a(58.212.225.181) --> 通过网闸 192.168.1.100 访问--> c(192.168.158.211)的80 3128端口
|
1
| product.image_url = product.image_url.gsub(/(http:.*\.jpg)/){|m| "/emall_image?url=#{$1}" }
|
在所有图片url之前加上/emall_image?url= 这样所有的图片请求就都会请求内网服务器a,这个时候看一下内网服务器a(58.212.225.181)的nginx配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| proxy_connect_timeout 5; proxy_read_timeout 60; proxy_send_timeout 5; proxy_buffer_size 16k; proxy_buffers 4 64k; proxy_busy_buffers_size 128k; proxy_temp_file_write_size 128k; proxy_temp_path /home/temp_dir; proxy_cache_path /home/cache levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g; resolver 8.8.8.8; server { listen 80; server_name localhost 58.212.225.181; location /emall_image { proxy_pass http://192.168.1.100/emall_image?url=$arg_url; proxy_cache cache_one; proxy_cache_valid 200 302 1h; proxy_cache_valid 301 1d; proxy_cache_valid any 1m; expires 30d; } }
|