NGINX 实现内部网络的HTTP代理服务器的配置

NGINX 是一个不错的 http 服务器,他的反向代理功能同样强大

下面就是利用nginx的代理功能实现http代理服务器。


需要实现的目的:

       实现FreeBSD系统的日常软件安装、系统升级等功能。

因服务器数量较多,在日常的维护中经常碰到多台服务器上都要安装同一个程序的情况,这样在一台服务器上下载、安装后,其他的服务器还要重新下载,通过下面的代理方式,只需在本地系统中配置一个系统shell变量,如:export http_proxy=http://10.0.0.x:8080 (bash) 即可。

当第一台通过代理的方式安装了某个程序后,其他的服务器只需要从代理服务器的本地下载该安装文件即可,极大的提高了效率,而且无需手动上传文件的多余操作;不仅如此,通过代理下载软件还可简化本地安全配置,提高系统的安全性。

当然下面的代理服务器配置同样适用于linux系统,并达到同样的目的(linux下面更为简单)。


脚本说明:

之所以分成多个不同的服务是需要实现,区分是否在本地存储文件,避免一个文件存储多个副本。

    resolver 8.8.8.8;

    server {
        listen  8080;
        location / {
                root /data;
                include proxy_params;

                if ( $host ~* portsnap(.)\.freebsd.org ) {
                        proxy_pass http://127.0.0.1:8081; 
                        break;
                }

                if ( $host ~* update(.)\.freebsd.org ) {
                        proxy_pass http://127.0.0.1:8084; 
                        break;
                }

                if ( $host ~* dl.xxx.net ) {
                        proxy_pass http://127.0.0.1:8082;
                        break;
                }

                if ( $host ~* portaudit.FreeBSD.org ) {
                        proxy_pass http://$http_host$request_uri;
                        break;
                }

		if ( $host !~* dl.xxx.net ) {
                        proxy_pass http://127.0.0.1:8083;
                        break;
                }
                #access_log off;
                proxy_redirect default;
                expires 1y;
        }        
        access_log      /var/log/nginx/proxy.log;
   }


   server {
        listen 127.0.0.1:8081;
        location /{
                root /data/pub/FreeBSD/proxy_cache/portsnap;
                proxy_store on;
                include proxy_params;
                proxy_temp_path /data/pub/FreeBSD/proxy_cache/portsnap;
                expires 3m;

                location ~ ^/(.*)\.ssl$ {
                        proxy_pass http://$http_host$request_uri;
                        break;
                }
                if ( !-f $request_filename ) {
                        proxy_pass http://portsnap1.freebsd.org$request_uri;
                }
                proxy_redirect default;
        }
        access_log      /var/log/nginx/1_proxy.log;
        error_log       /var/log/nginx/1_error.log;
   }

   server {
        listen 127.0.0.1:8082;
        location /{
                root /data;
        }
        access_log      /var/log/nginx/2_proxy.log;
   }

   server {
        listen 127.0.0.1:8083;
        location /{
                root /data/pub/FreeBSD/ports/distfiles;
                #access_log off;
                proxy_store on;
                include proxy_params;
                proxy_temp_path /data/pub/FreeBSD/ports/distfiles;
                #expires 3m;

                location /pub {
                        root /data;
                        if ( !-f $request_filename ) {
                                proxy_pass http://$http_host$request_uri;
                                break;
                        }
                        break;
                }
                #location ~* (^/[^pub]+)$ {
                #       rewrite ^/(.+)/([^/]*)$ /$2 redirect;  
                #}

                if ( !-e $request_filename ) {
                        proxy_pass http://$http_host$request_uri;
                }
                proxy_redirect default;
        }
        access_log      /var/log/nginx/3_proxy.log;
   }


  server {
        listen 127.0.0.1:8084;
        location /{
                root /data/pub/FreeBSD/proxy_cache/freebsd-update;
                #access_log off;
                proxy_store on;
                include proxy_params;
                proxy_temp_path /data/pub/FreeBSD/proxy_cache/freebsd-update;
                expires 3m;

                location ~ ^/(.*)\.ssl$ {
                        proxy_pass http://$http_host$request_uri;
                        break;
                }
                if ( !-f $request_filename ) {
                        #proxy_pass http://portsnap1.freebsd.org$request_uri;
                        proxy_pass http://$http_host$request_uri;
                }
                proxy_redirect default;
        }
        access_log     /var/log/nginx/4_proxy.log;
        error_log       /var/log/nginx/4_error.log;
   }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值