跳至主要內容

在 Windows 安裝 Nginx 伺服器

Pamis Wang大约 3 分鐘伺服器NginxNginx 1.23Windows

在 Windows 安裝 Nginx 伺服器

前言

有時候為了測試小網站又懶得弄個 Linux 環境,
那麼直接在 Windows 環境也是種選擇,
不用安裝只要下載就可以馬上使用惹。

下載網頁伺服器 Nginx

官網下載

官方下載頁面open in new window

選擇 nginx/Windows-{version} 版本

解壓縮檔案

解壓縮到任意目錄

本次教學以 D 槽為解壓縮目的

執行網頁伺服器 Nginx

到 D:\nginx-{version} 內會看到 nginx.exe

不用安裝就可以直接執行

開啟瀏覽器輸入 http://127.0.0.1/open in new window 看到歡迎畫面代表成功

設定網頁伺服器 Nginx

設定備份

設定檔是 nginx.conf

位置會在 D:\nginx-1.27.2\conf\nginx.conf

設定之前建議備份該檔案,改壞了有得救。

參考設定檔

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;


events
{
    worker_connections  1024;
}


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  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

	# 測試主頁
    server
	{
        # 指定處理請求的通訊埠
		listen       80;

		# 指定處理請求的主機名稱
        server_name  localhost;

		# 指定專案路徑
		root   html;

		# 在 Content-Type 標頭中自動加上 charset 的設定值
        charset utf-8;

		# log 路徑與名稱
        access_log  logs/test.access.log;
		error_log  logs/test.error.log;

		# 預設首頁檔名
		location /
		{
            index  index.html index.htm;
        }

		# 將伺服器錯誤頁面重定向到指定頁面
        error_page  403 404              /40x.html;
        error_page  500 502 503 504  /50x.html;
        location = /50x.html
		{
            root   html;
        }
    }

	# 一般 PHP 檔案
    server
	{
        # 指定處理請求的通訊埠
		listen       80;
		# 指定處理請求的主機名稱
        server_name  127.0.0.50;

		# 指定專案路徑與預設首頁檔名
		root           D:/test;
		index  index.php

		# 在 Content-Type 標頭中自動加上 charset 的設定值
        charset utf-8;

		# log 路徑與名稱
        access_log  logs/php.access.log;
		error_log  logs/php.error.log;

        # 通過 php-cgi 監聽的 port 來處理 PHP 檔案
        location ~ \.php$
		{
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
			fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
    }

	# Laravel 9 參考設定
	server
	{
		# 指定處理請求的通訊埠
		listen 80;
		# 指定處理請求的主機名稱
		server_name 127.0.0.2;

		# 將 root 視為一個入口,指到 Laravel 專案資料夾內的 public 資料夾
		root D:/apply_front/public;
		index index.php;

		# 在 Content-Type 標頭中自動加上 charset 的設定值
		charset utf-8;
 		add_header X-Frame-Options "SAMEORIGIN";
		add_header X-Content-Type-Options "nosniff";

		# 將所有的請求都交給 Laravel 的路由去處理,如 404 的頁面都是交由 Laravel 處理
		location /
		{
			try_files $uri $uri/ /index.php?$query_string;
		}

		location = /favicon.ico { access_log off; log_not_found off; }
		location = /robots.txt  { access_log off; log_not_found off; }

		# 將伺服器錯誤頁面重定向到指定頁面
		error_page 404 /index.php;

		location ~ \.php$
		{
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
			fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
		}

		location ~ /\.(?!well-known).*
		{
			deny all;
		}
	}

    # another virtual host using mix of IP-, name-, and port-based configuration
    #
    #server {
    #    listen       8000;
    #    listen       somename:8080;
    #    server_name  somename  alias  another.alias;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}


    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

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

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

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}

}

參考資料

Nginx 開源官方網站open in new window
Laravel 官方文件 - 部署open in new window

上次編輯於:
貢獻者: Pamis Wang,pamis