2016-07-24 2 views
1

uwsgi에서 python 앱을 실행하는 컨테이너 3 개를 마주보고있는 nginx (컨테이너에서 실행 중)로 도커 작성 예제를 구성하려고합니다.로컬 호스트에서 액세스 할 때 오류가 발생했습니다 : NGINX uWSGI

컨테이너 용 도커 IP를 통해 nginx를 시도하면 응용 프로그램을 아무런 문제없이 액세스 할 수 있습니다. 그러나 호스트 URL (nginx는 포트 9999를 사용하여 호스트에 바인드 됨)에서 로컬 호스트 : 9999를 사용하여 액세스하려고하면 nginx 페이지에 액세스 할 수 있지만 모든 응용 프로그램 URL 또는/admin/uri는 404 오류와 함께 표시됩니다.

나는 행운없이 포럼과 Stackoverflow 답변 톤을 통해 갔다, 누군가가 나를 해결할 수 있도록 도와 주실 수 있습니까?

자세한 내용은 아래 첨부 :

내 고정 표시기의 작성 파일은 다음과 같습니다

upstream node-app { 
     least_conn; 
     server my-app1:8080; 
     server my-app2:8080; 
     server my-app3:8080; 
} 

server { 
     listen 80 default; 
     server_name _; 
     location/{ 
     proxy_pass http://node-app; 
     include /etc/nginx/uwsgi_params; 
     } 
} 

편집이 : nginx를위한

version: '2' 
services: 
    nginxlb: 
    build: ./nginx 
    ports: 
     - "9999:80" 
    links: 
     - my-app1:my-app1 
     - my-app2:my-app2 
     - my-app3:my-app3 
    volumes: 
     - ./logs/nginx/:/opt/my-logs/nginx/ 
    my-app1: 
    build: ./my 
    expose: 
     - 8080 
     - 8081 
    volumes: 
     - ./logs/node1:/opt/my-logs/node1/ 
    my-app2: 
    build: ./my 
    volumes: 
     - ./logs/node2/:/opt/my-logs/node2/ 
    expose: 
     - 8080 
     - 8081 
    my-app3: 
    build: ./my 
    volumes: 
     - ./logs/node3:/opt/my-logs/node3 
    expose: 
     - 8080 
     - 8081 

사이트 사용의 conf는 다음과 같습니다 NGINX 용 Docker 파일입니다. 기본 nginx.conf 파일에 대해 변경하지 않았습니다.

012 3,516,
From nginx 

MAINTAINER DevOps 

# Update the container 
RUN apt-get update 

# Create directories and set working directory 
RUN mkdir /opt/myapp/ 
RUN mkdir /opt/myapp/django-static/ 
RUN mkdir /opt/myapp/django-media/ 
RUN mkdir /opt/myapp/webroot/ 
run mkdir -p /opt/myapp-logs/nginx/ 
WORKDIR /opt/myapp/ 

# Copy configs and code to Container 
ADD config/nginx.conf /etc/nginx/nginx.conf 
ADD config/nginx-site.conf /etc/nginx/sites-enabled/nginx.conf 
ADD config/uwsgi_params /etc/nginx/uwsgi_params 

EXPOSE 80 
+0

(404)의 nginx이'server'의 nginx의 config 블록에 도달하지 않은 제안한다; 어쩌면 기본 nginx 설정 파일의 매개 변수가 귀하의 설정을 무시합니까? 삭제하려고 시도 했습니까? 그게 도움이되지 않으면 nginx/Dockerfile의 내용을 게시하십시오. – rafalmp

+0

nginx 서버는 nginx 컨테이너 IP ('sudo docker inspect | grep IPAddress'를 통해 얻음)를 통해 액세스 할 때 uginx 서버를 제공합니다. – user2693188

+0

방금 ​​내 nginx Dockerfile을 추가했는데 작성 파일로 도커 네트워킹을하고 있는지 여부를 생각하고 있습니다. .. – user2693188

답변

1
기본 사이트에 대한

Nginx의 설정 파일이 포함 된 :

당신이 http://localhost:9999에 갈 때 따라서이 설정을 사용
server_name localhost; 

; 또한 - nginx는 /etc/nginx/sites-enabled 디렉토리와 그 내용을 처리하지 않습니다. 기본 nginx.conf에서 :

include /etc/nginx/conf.d/*.conf; 

당신의 Dockerfile 수정 - 대신 :

ADD config/nginx-site.conf /etc/nginx/sites-enabled/nginx.conf 

사용 :

RUN rm /etc/nginx/conf.d/default.conf 
ADD config/nginx-site.conf /etc/nginx/conf.d/nginx.conf 
+0

위대한, 그것은 일했습니다, 정말 고마워요. – user2693188

관련 문제