nginx + uwsgi + django 협동 작업 시 발생 하 는 오류 및 해결

2519 단어 uwsginginx
오류 발생 원인:
  • django 프로젝트 를 서버 에 복사 하 였 습 니 다.
  • nginx 를 성공 적 으로 설치 하여 nginx 를 단독 테스트 할 때 nginx 환영 페이지 를 성공 적 으로 볼 수 있 습 니 다.
  • uwsgi 단독 테스트, 명령 행 테스트, 성공 적 으로 접근 할 수 있 습 니 다.

  • 오류 1: 브 라 우 저 로 네트워크 IP 를 방문 하여 uWSGI 를 단독으로 테스트 할 때 자신 이 쓴 애플 리 케 이 션 을 찾 을 수 없습니다.
    해결: django 공식 (https://docs.djangoproject.com/en/1.11/howto/deployment/wsgi/uwsgi/) 의 uwsgi 설정, module 매개 변 수 를 정확하게 작성 합 니 다.
    module=mysite.wsgi:application

    uwsgi 설정 파일 에 환경 설정 추가
    env = DJANGO_SETTINGS_MODULE=mysite.settings

    주: my site 를 자신의 응용 프로그램 으로 바 꾸 어 이름 을 부 르 고 다른 것 은 움 직 이지 마 세 요.이 중 브 라 우 저 로 직접 테스트 (nginx 와 같은 웹 서버 를 거치 지 않 음), socket 은 http - socket 으로 바 꿔 야 합 니 다.
    오류 2: uwsgi 로그 오류 아마 다른 인 스 턴 스 of uwsgi is running on the same address.
    해결: 이것 은 설정 을 수정 한 후에 다시 시작 하기 때 문 일 수 있 지만 포트 서 비 스 는 실행 전의 설정 입 니 다.포트 를 다시 시작 해 야 합 니 다.운행 하 다.
    fuser –k    /tcp

    오류 보고 3: nginx 와 uwsgi 협회 가 동시에 upstream prematurely closed connection while reading response header from upstream
    해결: 이전에 인터넷 에서 자 료 를 찾 았 는데 이 bug 가 나 온 여러 가지 원인 이 있 습 니 다. 어떤 사람 은 백 스테이지 프로그램 이 시간 을 초과 하면 socket 연결 이 닫 힙 니 다. 이런 경우 socket 시간 초과 연결 의 인 자 를 수정 해 야 합 니 다.데이터베이스 에 문제 가 있 는 경우 도 있다.하지만 이 문 제 는 nginx 와 uwsgi 의 협의 가 일치 하지 않 는 다 는 것 이다.그래서 다음 과 같이 수정 합 니 다.
    uwsgi 는 http 프로 토 콜 과 uwsgi 프로 토 콜 을 지원 하 며 nginx 도 마찬가지 입 니 다.
    그래서 uwsgi 프로 토 콜 을 사용 하여 uwsgi 서버 와 nginx 서버 의 통신 프로 토 콜 로 사용 하려 고 할 때 다음 과 같이 설정 합 니 다.
    nginx
    location / {
                include uwsgi_params;
                uwsgi_pass uwsgi://ip:port;
            }

    주: nginx 공식 문서 에서 uwsgipass 기본 프로 토 콜 은 uwsgi 또는 suwsgi 입 니 다.
    uwsgi
    socket = ip:port

    혹은
    uwsgi-socket = ip:port

    주: uwsgi 공식 문서 에서 socket 옵션 의 해석 은 기본 프로 토 콜 을 사용 하여 지정 한 tcp 포트 에 연결 하 는 것 입 니 다.uwsgi 는 uwsgi 프로 토 콜 에 대한 지지 도가 가장 좋 기 때문에 기본 프로 토 콜 은 uwsgi 라 고 생각 합 니 다.uwsgi - socket 옵션 은 프로 토 콜 사용 uwsgi 를 지정 합 니 다.
    내 가 http 프로 토 콜 을 사용 하여 uWSGI 서버 와 nginx 서버 의 통신 프로 토 콜 로 사용 할 때 다음 과 같이 설정 합 니 다.
    nginx
    location / {
                proxy_pass http://ip:port/uri/;
            }

    주: nginx 공식 해석 proxypass 기본 프로 토 콜 은 http 또는 https 입 니 다.
    uwsgi
    http-socket = ip:port

    주: http - socket 은 기본적으로 http 프로 토 콜 을 사용 합 니 다.
    주: 브 라 우 저 를 사용 하여 접근 할 때 브 라 우 저 주소 표시 줄 에서 기본 값 은 http 프로 토 콜 입 니 다.따라서 브 라 우 저 를 사용 하여 uWSGI 를 단독으로 테스트 할 때 http - socket 을 사용 해 야 합 니 다.

    좋은 웹페이지 즐겨찾기