Nginx

nginx 代理通行證僅適用於根位置

  • November 21, 2021

我在 vps 中執行節點 js 應用程序。

這是我的 nginx 配置:

server {
   listen       80;
   server_name  xxx.xxx.xxx.xxx;
   #access_log   logs/ecommerce.access.log  main;
   
   location /ecommerce/api/ {
       proxy_pass      http://127.0.0.1:8000/api/;
   }
   
   location /ecapp/ {
       proxy_pass      http://127.0.0.1:3000/;
   }
}

localhost:8000/api是使用mongodb atlas的後端伺服器。我已經通過使用郵遞員和發送請求確認了這項工作。

localhost:3000是前端應用程序。

前端應用程序僅在以下情況下通過我的 vps 的公共 ip 工作:

server {
   listen       80;
   server_name  xxx.xxx.xxx.xxx;
   #access_log   logs/ecommerce.access.log  main;
   
   location /ecommerce/api/ {
       proxy_pass      http://127.0.0.1:8000/api/;
   }
   
   location / {
       proxy_pass      http://127.0.0.1:3000/;
   }
}

除了/like之外的位置/ecapp/不起作用。只有位置/作品。

http://my_vps_ip/我想通過like以外的方式訪問前端應用程序http://my_vps_ip/ecapp

任何幫助表示讚賞。

我想通了,所以我在這裡發布我的解決方案。

客觀的

在 http://my_public_vps_addr:port/sub_path 託管 create-react-app 站點。

程序

  1. 在 .env 文件中:a) 設置 NODE_ENV=production b) 將 PUBLIC_URL 設置為 http://my_public_vps_addr:port/sub_path
  2. 設置基本名稱:<Router basename=’/sub_path’></Router>
  3. npm run build a) 這會在 build/ 目錄中生成靜態文件。
  4. 將內容 build/* 複製到 /var/www/sub_path/html/sub_path/
  5. cd 到 /var/www/sub_path/html/ a) sudo find . -type d -exec chmod 755 {} \; b)sudo find . -type f -exec chmod 644 {} \;
  6. touch /etc/nginx/sites-available/sub_path a) ln -s /etc/nginx/sites-available/sub_path /etc/nginx/sites-enabled/sub_path
  7. /etc/nginx/sites-available/sub_path 的內容
   server {
     listen port;
     listen [::]:port;
     root /var/www/sub_path/html;
     index index.html index.htm index.nginx-debian.html;
     server_name my_public_vps_addr:port;
     location /sub_path {
       try_files $uri $uri/ /index.html =404
     }
   }
  1. 重啟 nginx 服務:a) sudo systemctl restart nginx.service
  2. 您的網站應該可以從 http://my_public_vps_addr:port/sub_path 獲得
  3. 而已!

引用自:https://unix.stackexchange.com/questions/678060