nginx實現反向代理

       由於最近要給學院的13級孩子掛訓練賽,爲了防止上網查資料找代碼,我學着tiankonguse學長之前給我們掛比賽訓練的方法,採用反向代理,局域網內只允許訪問我允許的網站。

       反向代理就是指以代理服務器來接受internet上的連接請求,然後將請求轉發給內部網絡上的服務器,並將從服務器上得到的結果返回給internet上請求連接的客戶端,此時代理服務器對外就表現爲一個服務器。

       如果我的服務器代理了某個網址,那麼對於用戶來說,我的服務器就相當於是那個網址了。

       示意圖如下:


       反向代理在網絡安全上也蠻有作用的,能有效保護實際服務器。

       我用的是nginx服務器進行反向代理的,用的是tiankonguse上傳在github上的nginx的文件,配置文件已經寫好了是方便ACM管理員的。然而在我使用的過程中,遇到了一些問題,大概問題是缺了log和temp文件夾,自己加上就可以了,dos下啓動nginx,然後會有錯誤提示,缺啥補啥。

       一些命令如下:

       測試conf

       nginx.exe -t 測試配置文件nginx.conf是否生效。

       

       啓動 nginx

       在命令行裏,進入到 nginx.exe 的目錄下,然後執行 start nginx 即可啓動 nginx 程序了。

       也可以直接雙擊exe文件,然後cmd會一閃而過,這時nginx就啓動了。
       

       停止 nginx
       輸入命令 nginx -s stop 即可停止 nginx

       退出 nginx
       輸入命令 nginx -s quit 即可退出 nginx

       重啓 nginx
       輸入命令 nginx -s reload 即可重新加載 nginx


       注意nginx默認80端口,所以需要實現關閉IIS服務器,或者把配置文件改爲其他端口,比如8080端口。

       不能超過1024個連接。

       這是官方文檔:http://nginx.org/en/docs/windows.html

       

      但是用了tiankonguse的配置文件,在我的電腦上仍然不能訪問指定的網站,於是讓學長遠程我的電腦,幫我查錯,寫了一個新的conf,代碼如下:

#user  nobody;
worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    #gzip  on;

    server {
        listen       8080;
        server_name  127.0.0.1;

        location / {
            root   html;
            index  index.html index.htm;
        }
        #access_log  logs/host.access.log  main;


        location ~ \.zip$ {
            root   http://127.0.0.1;
        }
        #location ~ \.[^z].$ {
        #    proxy_pass   http://acm.hdu.edu.cn;
        #}
            
        location ~ \.[^z] {
            proxy_pass  http://acm.hust.edu.cn;
        }


        #error_page  404              /404.html;
        error_page   500 502 503 504  /50x.html;


    }

}


        改完之後,就能代理acm.hust.edu.cn了,重啓nginx之後,把acm.hust.edu.cn改成自己的ip地址,然後後面跟上對應的子URL,就能訪問對應的頁面了。

        這樣,反向代理就成功了。

        接下來的工作,就是讓訓練隊員連接無線路由器,然後我的電腦作爲反向代理服務器連接外網和無線路由器,示意圖如下:


         關掉自己電腦的防火牆,然後讓用戶訪問無線路由器的IP地址,就能訪問被代理的網站了,而且不能訪問其他網站。比如101的無線路由器的IP地址:192.168.1.12

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章