2016-06-20 2 views
0

docker에서 nginx를 사용하여 ejabberd 연결 관리자를 역방향 프록시하려고합니다. 16.04 및 MySQL은 : 5.6 내 로컬 고정 표시기에서 사용할 수있는 다음nginx에서 업스트림 서버로 업스트림 서버로 전달하는 방법

내 고정 표시기-파일 작성

version: '2' 
services: 
    nginx: 
    image: nginx 
    ports: 
     - "80:80" 
     - "443:443" 
    depends_on: 
     - ejabberd 
    links: 
     - ejabberd 
    ejabberd: 
    image: ejabberd:16.04 
    depends_on: 
     - mysql 
    ports: 
     - "5280:5280" 
    links: 
     - mysql 
    mysql: 
    image: mysql:5.6 
    ports: 
     - "3306:3306" 

이미지 의 nginx, ejabberd입니다. 다음

내가 URL을 나는 오류 (404)를 얻을 수 http://192.168.99.102/http-bind

을 액세스 할 때

upstream ejabberd-server { 
     server ejabberd:5280; 
} 
server { 
    # regular silverstripe things here 

    # location should match your JabberPage::BOSHUrl 
    # with a leading slash 
    listen 80; 
    #server_name oops.hereim.co 

    location /http-bind { 
     # Local ejabberd with http-bind 
     proxy_set_header X-Forwarded-Host $host; 
     proxy_set_header X-Forwarded-Server $host; 
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
     proxy_pass http://ejabberd-server; 
    } 

} 

그러나 찾을 수 없습니다 nginx.conf 파일에 포함되어 내 서버 설정 파일입니다 .

위의 구성에서 뭔가가 누락 되었습니까?

192.168.99.102은 내 도커 컴퓨터의 IP입니다.

docker-compose exec nginx ping ejabberd 

위의 명령은 응답을 반환합니다.

nginx와 ejabberd가 동일한 ejabberd 컨테이너에 있지 않으므로 업스트림을 ejabberd를 호스트하도록 설정해야합니다.

docker-compose.yml이 보이면 ejabberd와 mysql 연결이 제대로 작동하고 ejabberd에서 mysql에 연결할 수있다. 하지만 ejabberd에 연결하는 동안 누락 된 부분이있는 것 같습니다.

+0

이 ejabberd 서버 및 실행 읽기하지 않는 이유를 확인하는 것입니다? –

+0

예, ejabberd 서버가 실행 중입니다. –

+0

여러 움직이는 부분의 문제를 격리하는 데 도움이됩니다. http://192.168.99.102/ nginx와 (과) 얘기하고 있습니다. http://127.0.0.1:5200/ ejabberd를 불러오고 있습니까? 'docker-compose exec nginx ping ejabberd'가 응답합니까? – BMitch

답변

0

문제는 아마도 nginx 문제 때문일 수 있습니다. nginx는 /etc/nginx/conf.d 디렉토리에서 .conf 파일을 선택하지 않습니다.

/etc/nginx/sites-enabled/default 파일을 변경하고 해당 파일의 위치를 ​​입력해야했습니다. 이 질문에 대한 내 문제를 해결했습니다.

다음 행동 항목의 nginx가 /etc/nginx/conf.d 디렉토리에서 conf의 파일을

0

업스트림에 server 부분이 약간 잘못 표시되어 있습니다.

server ejabberd:5280; 대신 server 127.0.0.1:5280;을 사용해 볼 수 있습니까?

+0

nginx와 ejabberd는 다른 도커 컨테이너에서 실행되므로 localhost 또는 127.0.0.1은 유용하지 않습니다. –

관련 문제