本案例有用過可行
反向代理就是是網站通過一台機器發布到公網,客戶訪問的時候是直接訪問那台代理機器的,然后通過那台機器才訪問到內網網站。
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文件的位置。
這種方法,后面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