2017-12-22 9 views
0

방금 ​​새로운 나무 딸기 파이 3을 먹었고 노드가있는 nginx를 설치했습니다. nginx 웹 서버가 실행 중입니다. 그러나 어떻게 든 나는 내 웹 사이트 작업의 javascript를 얻지 못한다. 내 웹 서버의 각 위치에 대해 자바 스크립트를 활성화해야합니까, 아니면 서버의 모든 사이트에서 노드를 작동시키는 방식으로 노드를 설정할 수 있습니까?리눅스 : nginx에 node.js 설정

######################################### 
###   Directories   ### 
######################################### 
# /www/var/        # 
# | - > index.html (the hub/mainpage) # 
# | proj1/        # 
# | | - > index.html (website 1)  # 
# | proj2/        # 
# | | - > index.html (website 2)  # 
# | | - > js/somescript.js    # 
# | proj3/        # 
# | | - > index.html (website 3)  # 
# | | - > js/anotherscript.js   # 
# | proj4/        # 
# | | - > index.html (website 4)  # 
# | proj5/        # 
# | | - > index.html (website 5)  # 
# | | - > js/morescript.js    # 
# | ...         # 
######################################### 

당신이 내 웹 사이트 (http://strtpg.xyz)/www가/var에 밖으로 mainpage로 이동/표시에 beeing된다

여기 내 웹 사이트의 디렉토리 계층 구조를 볼 수 있습니다. 이 서버는 서버에서 호스팅되는 다른 모든 사이트에 액세스 할 수있는 허브의 일종입니다. 폴더 이름을 링크에 추가하여 다른 사이트에 액세스 할 수 있습니다 (예 : 'http://strtpg.xyz/proj1'또는 'http://strtpg.xyz/proj5' 사이트 중 일부는 자바 스크립트를 사용하고 일부는 사용하지 않습니다.

그리고이 /etc/nginx/sites-available/에서 내 설정 파일입니다

# Server configuration 
#upstream pnkpnd { 
# server localhost:3420; 
# keepalive 8; 
#} 

server { 
    listen 0.0.0.0:80; 
    listen [::]:80; 
    server_name localhost; 
    index index.html index.htm; 

    location/{ 
     root /var/www; 
     try_files $uri $uri/ =404; 
     # Default root of site won't exist. 
     #return 410; 
    } 

    location /strtpg { 
     root /var/www; 
     try_files $uri $uri/ =404; 
    } 

    location /dshbrd { 
     root /var/www; 
     try_files $uri $uri/ =404; 
    } 

    location /pnkpnd { 
     root /var/www; 
     try_files $uri $uri/ =404; 
#  proxy_http_version 1.1; 
#  proxy_set_header Upgrade $http_upgrade; 
#  proxy_set_header Connection 'upgrade'; 
#  proxy_set_header X-Real-IP $remote_addr; 
#  proxy_set_header X-Forward-For $proxy_add_x_Forwarded_for; 
#  proxy_set_header Host $http_host; 
#  proxy_set_header X-NginX-Proxy true; 
#  proxy_pass http://strtpg.xyz/; 
#  proxy_redirect off; 
    } 

    location ~ /\.ht { 
     deny all; 
    } 
} 

내가 주석 내 웹 사이트 작업 노드를 얻기 위해 밖으로 시도, 그래서 적어도 웹 사이트 자체를 볼 수있는 모든 물건.

+0

에서 노드 응용 프로그램 서버에 example.com에 만들어진 모든 요청? nodeJS에 대한 연결을 찾지 못하는 것 같습니다. 너 나 혼란 스럽다. – Stamos

+0

내 서버에서 javascript를 실행하기 위해 node.js가 필요하지 않습니까? – Jub

답변

1

노드는 일반적으로 포트를 수신하고 정적 파일을 제공하며 서버에서 javascript를 실행하는 API 끝점을 갖는 웹 서버로 사용됩니다. 이를 위해 개발자는 ExpressJS와 같은 응용 프로그램 프레임 워크를 사용합니다.

/var/www과 같은 디렉토리를 가리키는 nginx가 잘못되었습니다.

보통 당신은 당신 서버가 포트에 수신 할 후이

$ node app.js

처럼 NodeJS 응용 프로그램을 실행해야합니다. 이 경우에는 3000

이므로 curl http://localhost:3000/을 사용하면 루트 사이트를 얻을 수 있습니다. app.js 내부에서 귀하의 응용 프로그램이 제공하는 모든 정적 및 동적 콘텐츠를 설정하십시오. 예 : index.html을 보내려면 sendfile을 사용해야합니다.

nginx 측에서해야 할 일은 리버스 프록시를 만드는 것입니다.

지금의 nginx 의지 프록시 모든이가 Node.js를 어떻게 연관되는지를 http://localhost:3000

server { 
    listen 80; 

    server_name example.com; 

    location/{ 
     proxy_pass http://localhost:3000; 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection 'upgrade'; 
     proxy_set_header Host $host; 
     proxy_cache_bypass $http_upgrade; 
    } 

} 
+0

JavaScript를 사용하는 모든 위치에 대해 프록시 설정을 지정해야합니까? 그렇다면 각 위치마다 다른 포트가 있어야합니까? – Jub

+0

아니요, 필요 없습니다. 이해가 피상적이기 때문에 "무엇이"인지 "어떻게 작동하는지"읽는 것으로 시작해야합니다. – Stamos

+0

내년에 봐야 할 것 같네요. ^^ 그것은 nginx를 제거하고 아파치를 설치하여 자바 스크립트가 서버 측에서 실행되도록하는 것이 훨씬 더 쉬울 것으로 보인다. 이것은 내가 지금 내 목표를 조금 더 쉽게 할 수있게 해줄 것이다. – Jub