Nginx Gunicorn Flask 앱이 내 웹사이트의 임의(캐시된) 버전을 반환합니다.

Nginx Gunicorn Flask 앱이 내 웹사이트의 임의(캐시된) 버전을 반환합니다.

소프트웨어에는 여러 계층이 있고 어느 계층이 문제인지 알 수 없기 때문에 이곳에서 물어볼 수 있기를 바랍니다.

내 browsersync 프록시가 내 사이트의 일부 캐시된 버전을 반환합니다., 내 작업 흐름은 다음과 같습니다.

Windows 10 위에 Fedora 25의 VMWare 인스턴스를 실행합니다. 이제부터는 이것이 저의 "기본" OS입니다.

두 번째 VMWare 인스턴스로 Fedora Linux에서 SSHFS를 사용하여 설치된 Ubuntu 16.04.2 Server를 실행합니다. 루트 권한이 있는 사용자(그러나 루트 자체는 아님)를 사용하여 SSH를 통해 연결했습니다.

나는 /var/www 내의 virtualenv 내에서 Flask 애플리케이션을 실행하고 있으며 이 폴더에 대해 chown user:www-data -R을 수행했습니다.

내 Nginx는 우분투 서버의 포트 80에서 애플리케이션을 제공하고 이를 호스트 이름(website.com)으로 확인하므로 내 Fedora 워크스테이션에는 호스트 "192.168.xx.xx website.com"이 있습니다. 이는 내 애플리케이션에 액세스할 수 있음을 의미합니다. website.com을 입력하면 이제부터 모든 것이 괜찮습니다.

gulp와 browsersync-gulp 플러그인을 넣으면 문제가 시작됩니다.

내 애플리케이션을 프록시하기 위해 다음 설정을 사용합니다.

proxy: {
    target: 'http://127.0.0.1',
    proxyReq: [
        function(proxyReq) {
            proxyReq.setHeader('Host', 'website.com')
        }
    ]
}

이것은 잘 작동합니다. 192.168.xx.xx에서 다른 서버를 열고 파일의 일부 변경 사항을 커밋할 때 자체적으로 새로 고쳐집니다(변경 사항이 있을 때 browsersync를 다시 로드하는 감시 작업을 지정했기 때문입니다).

제가 직면한 문제는,browsersync 프록시 또는 www.website.com을 통해 웹사이트를 새로 고칠 때마다 다른 버전의 웹사이트가 나타납니다.(최근에 변경한 내용을 볼 수 있습니다.) - 내 사이트의 3가지 다른 버전을 캐시에 보관하고 그 중 하나를 완전히 무작위로 제공하는 것 같습니다.

그럴 수도 있을 것 같아요3개 버전의 수는 3명의 작업자를 반영합니다.systemd에서 gunicorn을 설정했는데 다음과 같습니다.

"ExecStart=/home/user/.local/bin/gunicorn --workers 3 --bind unix:website.com.sock -m 777 wsgi:app"

(권한은 007이어야 하는 것으로 알고 있습니다.)

내 Nginx 사이트 구성은 다음과 같습니다.

location / {
    include proxy_params;
    proxy_pass http://unix:/var/www/website.com/website.com.sock;
}

따라서 체인은 다음과 같습니다.

Fedora 25 -> SSH -> Ubuntu 16.04.2 -> Gulp -> Gulp-browsersync -> Nginx -> VirtualEnv -> Gunicorn -> Flask 애플리케이션

비슷한 것

사이트의 임의 버전을 새로 고칠 때마다 어떤 이유로든 너무 깁니다.

이 문제를 해결하는 방법을 알려주십시오. 제 작업 흐름에 대한 다른 팁도 알려주시면 감사하겠습니다.

답변1

결국 이것은 실제로 "캐싱" 문제가 아닙니다. 프런트엔드 파일이 변경될 때마다 Gunicorn 인스턴스를 다시 시작해야 합니다. 지금은 이것을 닫으세요.

systemd를 사용하여 애플리케이션을 제공하는 경우 변경할 때마다 재부팅해야 합니다. 그렇지 않으면 이전 버전의 사이트를 제공하게 됩니다.

관련 정보