windows下配置nginx伺服器
阿新 • • 發佈:2019-02-08
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,顯示已停止。這是正常的,因為啟動完成了就好了。
啟動成功已否要通過瀏覽器來訪問伺服器以確定。