Nginx 代理取決於域名

Nginx 代理取決於域名

我正在將 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 實例,但這毫無意義。

相關內容