2016-09-28 1 views
0

하나의 서버에 여러 개의 노드 응용 프로그램을 갖기를 원합니다. 다른 포트에서 실행되는 응용 프로그램을 사용하면 정상적으로 작동합니다. 포트로 IP 주소를 입력하여 응용 프로그램에 액세스 할 수 있습니다.nginx proxy to remote node.js 서브 디렉토리에있는 앱

나는과 같이 서로 다른 하위 디렉토리를 사용하여 프록시 내 nginx를 서버에서 응용 프로그램을 싶습니다 :

my.domain 

location /app1 { 
    proxy_pass http://10.131.6.181:3001; 
} 
location /app2 { 
    proxy_pass http://10.131.6.181:3002; 
} 

내가 응용 프로그램 1에 대한/APP1에 대한 모든 명시 적 경로를 이동했다 이렇게. 이 작동하지만 지금 정적 파일을 붙어있다.

지금은 http://10.131.6.181:3001/app1으로 애플리케이션에 액세스 할 수 있습니다.이 파일은 http://my.domain/app1을 통해 정적 파일이로드되지 않습니다.

정적 파일이 아닌 프록시 이상적으로 http://my.domain/css

내가 프록시의 명시 적 경로의 하위 디렉토리하지 않고 다른 포트의 응용 프로그램 만의 서브 디렉토리를하고 싶은 통해 http://10.131.6.181:3001/css 직접 액세스 할 수 . 나는 지난 5 시간 동안 내 머리를 벽에 걸어 봤지만 아무것도 얻지 못했습니다.

이제 적어도 nginx 프록시를 통해 정적 파일을 가져올 수 있다면 행복 할 것입니다.

+0

http://serverfault.com/questions/562756/how-to-remove-the-path-with-an-nginx- 프록시 패스, 아마도 이것은 –

+0

노드 서버에서 nginx를 설정해야합니까? 그래서 웹 서버에서 노드 서버로 리디렉션하고 노드 서버의 두 번째 nginx에서 다시 리디렉션합니까? –

+0

아,이게 nginx라고 생각했는데, 아파치를 사용합니까? –

답변

0

나는 Google 서지가 마침내 그것을 밖으로 일했다.

는 내가 Nginx에의 proxy_pass

my.domain 

location /app1 { 
    proxy_pass http://10.131.6.181:3001/app1; 
} 
location /app2 { 
    proxy_pass http://10.131.6.181:3002/app2; 
} 

에 디렉토리를 추가 그리고 나는 모든 리디렉션을 앞에했다 라우터에서 하위 디렉토리를

app.use('/app1', express.static(path.join(__dirname, 'public'))); 

app.use('/app1'', require('./routes')); 

을 사용하도록 명시 응용 프로그램을 변경했다.

router.get('/logout', function (req, res) { 
    req.logout(); 
    res.redirect('/app1/login'); 
}); 

정적 파일

그래서 HTML

<link rel="stylesheet" href="/app1/css/style.css"/> 

에서 고통의 비트가 모든 리디렉션 및 정적 URL을 변경하려면이라고합니다. 내 노드 익스프레스 앱에서 전역 변수를 설정하여 더 똑똑한 방법이 있다고 확신한다. 누구든지 쉬운 방법을 알고 있다면 ...