我正在將 AWS 的 EC2 與 Nginx 結合使用。
假設我有三個網域:domain1.com、domain2.com、domain3.com。假設我在三個不同的連接埠上有三個 Rails 應用程式:3000、3001、3002。
所有這些網域都連結到我的伺服器的連接埠 80。
根據請求的 URL,我希望連接埠 80 將請求重新導向到正確的連接埠。
我應該如何設定我的虛擬主機檔案?我知道 If 區塊存在,但 Nginx 似乎不推薦它。我的計劃是在我的 EC2 上擁有多個站點。
我無法在 Rails 應用程式連接埠上封鎖伺服器,因為它會阻止 Rails 伺服器。
答案1
取決於哪個領域(?):
server {
listen 80;
server_name .domain1.com; # Wildcard domain
return 301 $scheme://$host:3000$request_uri;
# use $host above because we use a wildcard domain
}
並為您的所有網域和所有 Rails 應用程式/連接埠重複此伺服器區塊
答案2
您說過您希望您的網站位於不同的連接埠上,並且您希望它們連結到連接埠 80。
Nginx 可以監聽不同網站的 80 端口,您只需將其配置為不同的網域即可。例如
server {
server_name www.example.com;
listen 80;
return 301 https://www.example.com$request_uri;
}
server {
server_name www.example.com;
listen 443 ssl https;
root /var/www/site;
// Insert https stuff here
}
server {
server_name www.example2.com;
listen 80;
root /var/www/site2;
}
server {
server_name www.example3.com;
listen 80;
root /var/www/site3;
}
您也可以運行負載平衡器和多個 nginx 實例,但這毫無意義。