vps 내에서 Node 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를 사용하는 백엔드 서버입니다. Postman을 사용하고 요청을 보내 이를 확인했습니다.
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/;
}
}
/
당신이 좋아하는 위치 이외의 위치는 작동 하지 /ecapp/
않습니다. 위치/직장만 해당됩니다.
http://my_vps_ip/
나는 이와 같은 것이 아닌 다른 방법을 통해 프런트엔드 애플리케이션에 액세스하고 싶습니다 http://my_vps_ip/ecapp
.
도움을 주시면 감사하겠습니다.
답변1
나는 그것을 알아 냈으므로 여기에 해결책을 게시하고 있습니다.
목적
create-react-app 사이트는 http://my_public_vps_addr:port/sub_path에서 호스팅됩니다.
프로그램
- .env 파일에서: a) NODE_ENV=product를 설정합니다. 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/에 복사합니다.
- /var/www/sub_path/html/로 cd 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에서 액세스할 수 있어야 합니다.
- 그게 다야!
답변2
위치를 /ecapp/으로 설정한 상태에서 http://my_vps_ip/ecapp을 로드하고 콘솔을 확인하면 다음과 같은 결과가 나타납니다.
GET http://my_public_vps_addr/static/js/bundle.js
GET http://my_public_vps_addr/static/js/0.chunk.js
GET http://my_public_vps_addr/static/js/main.chunk.js
Loading failed for the <script> with source “http://my_vps_public_ip/static/js/bundle.js”.
Loading failed for the <script> with source “http://my_vps_ip_public_ip/static/js/0.chunk.js”. ecapp:30:1
Loading failed for the <script> with source “http://my_vps_ip_public_ip/static/js/main.chunk.js”. ecapp:30:1
정적 파일을 찾는 이유는 무엇입니까? /var/www/html/ 아래에는 정적 디렉토리가 없습니다.
전자상거래 프로젝트의 소스코드는 다음과 같습니다. https://github.com/kaloraat/react-node-ecommerce