1. 程式人生 > >windows下配置nginx伺服器

windows下配置nginx伺服器

1、下載連結

http://nginx.org/en/download.html

2、拷貝到一個沒有中文名的路徑當中,解壓

3、啟動

c:\server\nginx>start nginx

或者

c:\server\nginx>nginx.exe


4、停止

強制停止
c:\server\nginx>nginx.exe -s stop
儲存並停止
c:\server\nginx>nginx.exe -s quit

5、修改配置檔案後重新載入

c:\server\nginx>nginx.exe -s reload

6、配置charset,在server裡面的server_name下面新增一行:

charset utf-8;

7、靜態檔案配置:

location ^~ /test/ {
		root "";
	}
這個表示,訪問路徑http://yourdomain.com/test/   會返回根目錄test資料夾下面對應的檔案,比如http://yourdomain.com/test/test1.html,則返回根目錄下面的test資料夾下面的test1.html檔案;
location ^~ /test/ {
		root ca/;
	}
這個表示,訪問路徑http://yourdomain.com/test/ 會返回根目錄下ca資料夾下面的test資料夾,注意,這裡url是host後面只跟著一個test,但是檔案的位置是host後面的ca的test。比如http://yourdomain.com/test/test2.html即位於根目錄下的ca資料夾下面的test資料夾下面的test2.html檔案。

8、萬域歸一:

1、80埠的http伺服器轉給https:

在80埠的http server裡面配置

server {
        listen       80;
        server_name  localhost;
        location / {
            rewrite ^/(.*)$ https://yourdomain.com/$1 permanent;
        }
這裡監聽了www.yourdomain.com和yourdomain.com兩個域名,都會轉給指定的https域名。

2、443埠的https伺服器,其中的www域名轉給直接的域名:

server {
        listen       443 ssl;
        server_name  www.yourdomain.com;

        ssl_certificate      C:/Users/Administrator/AppData/Roaming/letsencrypt-win-simple/httpsacme-v01.api.letsencrypt.org/www.yourdomain.com-

crt.pem;
        ssl_certificate_key  C:/Users/Administrator/AppData/Roaming/letsencrypt-win-simple/httpsacme-v01.api.letsencrypt.org/www.yourdomain.com-

key.pem;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

	rewrite ^/(.*)$ https://yourdomain.com/$1 permanent;
    }

注意,https連結在跳轉之前要進行ssl握手,就是說雖然這個www域名我不用,但是這個證書配置是必不可少的,必須是真實有效的,否則跳轉過去瀏覽器還是會提醒證書無效。

3、在最終的這個域名裡配置反向代理伺服器:

    server {
        listen       443 ssl;
        server_name  yourdomain.com;

        ssl_certificate      C:/Users/Administrator/AppData/Roaming/letsencrypt-win-simple/httpsacme-v01.api.letsencrypt.org/yourdomain.com-crt.pem;
        ssl_certificate_key  C:/Users/Administrator/AppData/Roaming/letsencrypt-win-simple/httpsacme-v01.api.letsencrypt.org/yourdomain.com-key.pem;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

	location / {
	    	proxy_pass http://localhost:3000;
		proxy_http_version 1.1;
		proxy_set_header Upgrade $http_upgrade;
		proxy_set_header Connection ‘upgrade’;
		proxy_set_header Host $host;
		proxy_cache_bypass $http_upgrade;	

            #root   html;
            #index  index.html index.htm;
        }

    }

在這裡,在完成ssl加解密之後,就轉給了真正工作的伺服器,我這裡是nodejs-express,看到熟悉的3000埠。注意千萬不要直接讓nodejs直接來處理ssl,巨慢。看到別人的經驗之談,沒有親測。

9、自啟動

1、下載winsw:

https://github.com/kohsuke/winsw

2、將winsw改名為nginx_auto_new,放到nginx.exe目錄中,並且建立一個同名的xml檔案,xml檔案如下:

<service>  
 <id>nginx</id>  
 <name>nginx</name>  
 <description>nginx</description>  
 <executable>d:\server\nginx\nginx.exe</executable>  
 <logpath>d:\server\nginx\</logpath>  
 <logmode>roll</logmode>  
 <depend></depend>  
 <startargument>-p d:\server\nginx</startargument>  
 <stopargument>-p d:\server\nginx -s stop</stopargument>  
</service>  

3、以管理員身份在命令列中執行:

安裝

D:\server\nginx>nginx_auto_new.exe install

解除安裝

D:\server\nginx>nginx_auto_new.exe uninstall

啟動

D:\server\nginx>nginx_auto_new.exe start

停止

D:\server\nginx>nginx_auto_new.exe stop

4、注意:

啟動了以後,到服務裡面去看,nginx服務對應的執行檔案是nginx_auto_new.exe,顯示已停止。這是正常的,因為啟動完成了就好了。

啟動成功已否要通過瀏覽器來訪問伺服器以確定。