iT邦幫忙

1

Nginx 同個 domain name alias 多個專案問題

  • 分享至 

  • xImage

各位好,我今天想利用 nginx 達到同一個 domain 經由不同的子路徑連到不同的 Laravel 專案:

  • http://24.test/cms1 -> /var/www/cms1/public
  • http://24.test/cms2 -> /var/www/cms2/public

以下是我目前的配置:

server {
    listen 80;
    server_name 24.test;

    root /var/www/cms1/public/;
    index index.php;

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
        fastcgi_hide_header X-Powered-By;
    }

   location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location /cms1 {
        alias /var/www/cms1/public/;
        index index.php;

        location ~ \.php$ {
            fastcgi_index index.php;
            fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
            fastcgi_param SCRIPT_FILENAME /var/www/cms1/public$fastcgi_script_name;
            include fastcgi_params;
            fastcgi_hide_header X-Powered-By;

            try_files $uri $uri/ /cms1/index.php?$query_string;
        }
    }

    location ~ /\.ht {
        deny all;
    }
}

root 的配置我是用來測試 php-fpm 以及 Laravel 專案是否有正常執行,測試是正常的可以連到,測試 /cms1 時我會註解掉以防干擾,但目前這樣配置連到 cms1 會得到 File not found.,應該就是傳送到 php-fpm 的路徑有誤導致無法正確執行,想請教這塊怎麼配置才對,謝謝。

望空 iT邦新手 1 級 ‧ 2025-01-03 20:51:33 檢舉
https://serverfault.com/questions/838082/nginx-two-locations-inside-same-server
chan15 iT邦新手 2 級 ‧ 2025-01-06 07:15:33 檢舉
單純靜態頁面這樣是沒問題的,我遇到的困難是正確的路徑傳到 php-fpm 這段
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

2

不要用路徑區分,很難處理。
我大多是用子域名來應用。反正也只是設定 host

以下是我的 nginx 設定

server {
	listen 80;
	listen [::]:80;

	server_name test.com *.test.com;
	
    	
	set $root "/var/www";
    	if ($host ~ ^(\w+)\.test\.com$) {	        
	        set $root "/var/www/$1";
    	}
    	
	root $root;
	
	location ~ \.php$ {
		fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
		fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
		include fastcgi_params;
		fastcgi_hide_header X-Powered-By;
	}

	location / {
		try_files $uri $uri/ /index.php?$query_string;
	}
}

這樣不同子域名就會在各自的目錄區內。開發很方便。
開新專案,再去 host 加上就行。

chan15 iT邦新手 2 級 ‧ 2025-01-06 15:53:05 檢舉

目前也是決定用不同域名了,路徑大小問題不斷

上面的設定
其實我自已是使用實體域名。然後設定成多子域名的模式。
所以我只要建新專案。目錄名就是我的子域名。
也不需要再來設定nginx了。

我要發表回答

立即登入回答