Nginx
nginx 代理通行證僅適用於根位置
我在 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 站點。
程序
- 在 .env 文件中:a) 設置 NODE_ENV=production b) 將 PUBLIC_URL 設置為 http://my_public_vps_addr:port/sub_path
- 設置基本名稱:
<Router basename=’/sub_path’></Router>
- npm run build a) 這會在 build/ 目錄中生成靜態文件。
- 將內容 build/* 複製到 /var/www/sub_path/html/sub_path/
- cd 到 /var/www/sub_path/html/ a)
sudo find . -type d -exec chmod 755 {} \;
b)sudo find . -type f -exec chmod 644 {} \;
- touch /etc/nginx/sites-available/sub_path a) ln -s /etc/nginx/sites-available/sub_path /etc/nginx/sites-enabled/sub_path
- /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 } }
- 重啟 nginx 服務:a) sudo systemctl restart nginx.service
- 您的網站應該可以從 http://my_public_vps_addr:port/sub_path 獲得
- 而已!