WINDOWS 2008Server 配置nginx 反向代理服務器

本案例有用過可行


反向代理就是是網站通過一臺機器發佈到公網,客戶訪問的時候是直接訪問那臺代理機器的,然後通過那臺機器才訪問到內網網站。



0、先要在域名官網上面配置域名對應的IP地址,然後要在自己路由器上面將80端口映射到要裝nginx服務器的IP地址。

1、從官網上面下載nginx1.6.2   WINDOWS版本的。訪問地址http://nginx.org/en/download.html

2、解壓縮到C盤根目錄下面

3、複製C:\nginx\conf\nginx.conf,保存成一個副本

4、編輯nginx.conf,內容如下

#工作進程數,建議設置爲CPU的總核數

worker_processes  4;

#全局錯誤日誌定義類型,日誌等級從低到高依次爲:

#debug | info | notice | warn | error | crit

error_log  logs/error.log  info;

#記錄主進程ID的文件

pid        /nginx/nginx.pid;


#一個進程能打開的文件描述符最大值,理論上該值因該是最多能打開的文件數除以進程數。

#但是由於nginx負載並不是完全均衡的,所以這個值最好等於最多能打開的文件數。

#LINUX系統可以執行 sysctl -a | grep fs.file 可以看到linux文件描述符。

worker_rlimit_nofile 65535;


#連接數上限, 單個進程允許的最大連接數

events {   

    worker_connections  65535;

}


#設定http服務器,利用它的反向代理功能提供負載均衡支持

http {

    #文件擴展名與文件類型映射表

    include       mime.types;

    #默認文件類型

    default_type  application/octet-stream;

    #日誌格式

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                                   '$status $body_bytes_sent "$http_referer" '

                                   '"$http_user_agent" "$http_x_forwarded_for"';


    #access log 記錄了哪些用戶,哪些頁面以及用戶瀏覽器、ip和其他的訪問信息

    access_log  logs/access.log  main;

    #服務器名字的hash表大小

    server_names_hash_bucket_size 128;


    #客戶端請求頭緩衝大小。

    #nginx默認會用client_header_buffer_size這個buffer來讀取header值   

    client_header_buffer_size 32k;



    #如果header過大,它會使用large_client_header_buffers來讀取。

    #如果設置過小HTTP頭/Cookie過大 會報400 錯誤 nginx 400 bad request

    #如果超過buffer,就會報HTTP 414錯誤(URI Too Long)

    #nginx接受最長的HTTP頭部大小必須比其中一個buffer大

    #否則就會報400的HTTP錯誤(Bad Request)

    large_client_header_buffers 4 32k;




    #客戶端請求體的大小

    client_body_buffer_size    8m;

    #隱藏ngnix版本號

    server_tokens off;

    #忽略不合法的請求頭

    ignore_invalid_headers   on;

    #指定啓用除第一條error_page指令以外其他的error_page。

    recursive_error_pages    on;

    #讓 nginx 在處理自己內部重定向時不默認使用  server_name 設置中的第一個域名

    server_name_in_redirect off;

    #開啓文件傳輸,一般應用都應設置爲on;

    #若是有下載的應用,則可以設置成off來平衡網絡I/O和磁盤的I/O來降低系統負載

    sendfile  on;

    #告訴nginx在一個數據包裏發送所有頭文件,而不一個接一個的發送。

    tcp_nopush  on;


    #告訴nginx不要緩存數據,而是一段一段的發送--當需要及時發送數據時

    #就應該給應用設置這個屬性,

    #這樣發送一小塊數據信息時就不能立即得到返回值。

    tcp_nodelay    on;

    #長連接超時時間,單位是秒

    keepalive_timeout  65;

    #gzip模塊設置,使用 gzip 壓縮可以降低網站帶寬消耗,同時提升訪問速度。

    

    #開啓gzip

    gzip  on;      

    

    #最小壓縮大小

    gzip_min_length  1k;         

    #壓縮緩衝區

    gzip_buffers     4 16k;        

    #壓縮版本

    gzip_http_version 1.0;       

    #壓縮等級

    gzip_comp_level 2;           

     #壓縮類型

    gzip_types   text/plain application/x-javascript text/css application/xml;          

    




    #upstream作負載均衡,在此配置需要輪詢的服務器地址和端口號

    #max_fails爲允許請求失敗的次數,默認爲1.

    #weight爲輪詢權重,根據不同的權重分配可以用來平衡服務器的訪問率。


    #指定要域名對應的WEB項目訪問地址

    upstream youjie_co{

        server 192.168.33.129:18080 max_fails=0 weight=1;

        

    }


    #主機配置

    server {

        #監聽端口

        listen       80;

        #自己指定要跳轉的域名

        server_name  youjie.co;

        #字符集

        charset utf-8;

        #單獨的access_log文件

        access_log  logs/192.168.33.129.access.log  main;

        #反向代理配置,

        #將所有請求爲http://hostname的請求全部轉發到upstream中定義的目標服務器中。

        location / {

            #此處配置的域名必須與upstream的域名一致,才能轉發。

            proxy_pass     http://youjie_co;

            proxy_set_header   X-Real-IP $remote_addr;

        }


        #啓用nginx status 監聽頁面

        location /nginxstatus {

            stub_status on;

            access_log on;

        }

        #錯誤頁面

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }


    }

    upstream u_pai_cn {

        server 192.168.33.129:28080 max_fails=0 weight=1;

    }




     server {

        #監聽端口

        listen       80;

        #自己指定要訪問的域名

        server_name  u-pai.cn;

        #字符集

        charset utf-8;

        #單獨的access_log文件

        access_log  logs/192.168.33.129.access.log  main;

        #反向代理配置,

        #將所有請求爲http://hostname1的請求全部轉發到upstream中定義的目標服務器中。

        location / {

            #此處配置的域名必須與upstream的域名一致,才能轉發。

            proxy_pass     http://u_pai_cn;

            proxy_set_header   X-Real-IP $remote_addr;

        }


        #啓用nginx status 監聽頁面


        location /nginxstatus {

            stub_status on;

            access_log on;

        }

        #錯誤頁面

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }


    }


}




到此配置完成

5、啓動nginx

開始菜單-->運行-->cmd-->

cd c:\nginx\

nginx

啓動完成

6、訪問

現在可以在瀏覽器中輸入u-pai.cn,youjie.co訪問到不同的網站。

u-pai.cn/nginxstatus,可以顯示出nginx的狀態

7、nginx相關命令


查看狀態


tasklist /fi "imagename eq nginx.exe"


立即停止:

nginx.exe -s stop


# 結束所有會話後再停止(平滑退出):

nginx.exe -s quit


# 重新加載配置文件# 

(當修改配置文件後,他會先啓動一個新的worker,在把原來的worker停止)

nginx.exe -s reload


重新打開日誌文件

nginx.exe -s reopen

查80端口果真被佔用。

netstat -aon|findstr "80"

 

8、WINDOWS開機自動啓動nginx

網絡上面找過有三種方法:

8.1、創建nginx.exe快捷方式,然後將快捷方式放入,開始菜單-->啓動,文件夾裏面

8.2、使用SrvanyUI


SrvanyUI的使用

解壓縮完,打開SrvanyUI.exe,然後點擊+號,記住要選擇“自建服務”,然後輸入相關的信息,選擇nginx文件的位置。

wKioL1RkdaGAgVrqAAN_jCEqG_A463.jpg


這種方法,後面services.msc裏面是無法停止nginx服務,需要自己寫批處理文件腳本才能停止


nginxstop.bat

@echo off

echo stopping nginx service...

net stop nginx

echo Kill nginx process...

taskkill /F /IM nginx.exe>nul




 




文章參考:http://blog.csdn.net/zxcvqwer19900720/article/details/24991427

http://blog.csdn.net/zhanglujie2008/article/details/24445037

http://blog.csdn.net/Poechant/article/details/7256184

http://wenku.baidu.com/link?url=T2bzmNLGxHY3kNzJ0CrY3FMdVC7u0rjkV_PyI-dYmy4fZOnchgUf-tfp35nz4JvjfsJ3DGt-gCKKoOav36dtrj5jD4jRA6KSb6yubobgQCi


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