Nginx
域和子域的 Nginx 配置
我是 Nginx 的新手。
我的主要目標是為一個域託管兩個網站。我想要一個與主域分開託管的子域,例如:
- example.com 來自
/home/user/Documents/vue_website/dist
- subdomain.example.com 來自
/var/www/html
因為我在一台伺服器上執行這一切,我相信這無法完成,因為它們具有相同的 IP 地址。
我現在正試圖通過使用子目錄來解決這個問題。如果我訪問 example.com/wp,它應該顯示第二個站點。
目前的 Nginx 站點配置如下所示:
server { listen 80 default_server; listen [::]:80 default_server; return 301 https://my-domain.com$request_uri; } server { access_log /var/log/nginx/scripts.log scripts; listen 443 ssl http2; listen [::]:443 ssl http2; ssl_certificate /etc/ssl/my-domain.com.pem; ssl_certificate_key /etc/ssl/_.my-domain.com_private_key.key; server_name my-domain.com www.my-domain.com; location / { root /home/pi/Documents/vue_website/dist; index index.html; } location /wp { root /var/www/html/; location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass 172.0.0.1:9000; fastcgi_index index.php; include fastcgi_params; } }
}
但這不起作用。我將不勝感激任何幫助。
編輯: 所以我現在讓子域工作。但現在的問題是我只能通過 ssl / 在前面輸入 https 來訪問它,這是我不想要的。
所以現在我正在嘗試根據搜尋到的域將 http 請求重定向到給定的站點
例如,如果我去http://my-domain.com將我重定向到 https 等等。
我得到的程式碼如下:
'my-domain.com' '1'; 'wp.my-domain.com' '2'; } server { listen 80; if ($new = '1') { return 301 https://my-domain.com$request_uri; } if ($new = '2') { return 301 https://wp.my-domain.com$request_uri; } }
我在程式碼中是否有問題,因為在我看來,如果我理解正確,它應該像那樣工作。
您認為您不能在一個 IP 上託管多個網站的假設是不正確的。您可以使用 http 或 https 在 IP 上託管任意數量的網站。如果您願意,還可以使用子文件夾託管不同的內容。
配置子域相當簡單,您只需使用兩個伺服器塊
server { server_name example.com; listen 443 ssl http2; // Add other required SSL entries root /var/www/site1; } server { server_name subdomain.example2.com; listen 443 ssl http2; // Add other required SSL entries root /var/www/site2; }
使用子文件夾配置你這樣做
server { server_name example.com; listen 443 ssl http2; // Add other required SSL entries location / { root /var/www/site1; } location /subdir { root /var/www/site2; } }
如果您需要進一步的幫助,請編輯您的問題並向我們提供比“它不起作用”更詳細的資訊。理想情況下,您將共享 URL 的捲曲、匹配的訪問和錯誤日誌條目、有用的 PHP/應用程序日誌以及預期的行為。