Отказано в доступе при подключении к апстриму в Nginx с Gunicorn - PullRequest
0 голосов
/ 11 марта 2020

Следуя этому учебнику , я попытался развернуть приложение Flask с Nginx и Gunicorn. Запуск приложения только с Gunicorn и подключение к нему работает нормально. Но после настройки экземпляра Unicorn для обслуживания проекта и настройки Nginx подключение к конечной точке дает состояние 502 в консоли браузера и ошибку разрешения в Nginx error.log. Мне известен подобный вопрос в (13: разрешение запрещено) при подключении к восходящему каналу: [nginx] . Но, учитывая, что моя система - RHEL 7, и я не понимаю команды в ответах, я не уверен, какие команды нужно выполнить. Конфигурации и сообщения об ошибках можно найти ниже. Помогите мне, если вы можете определить проблему.

/ etc / nginx / conf.d / default.conf

server {
    listen   9000;
    server_name  localhost;

    location /fasttext{
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://unix:/home/ec2-user/projects/vectorbot/vectorbot.sock;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }


}

Flask app

import plyvel
from flask import Flask
from flask_restful import Api
from laserembeddings import Laser
from getters.getIntents import *
from getters.getEntities import *

app = Flask(__name__)
api = Api(app)

path_to_bpe_codes = 'data/laser_models/93langs.fcodes'
path_to_bpe_vocab = 'data/laser_models/93langs.fvocab'
path_to_encoder = 'data/laser_models/bilstm.93langs.2018-12-26.pt'

laser = Laser(path_to_bpe_codes, path_to_bpe_vocab, path_to_encoder)


@app.route('/fasttext/lang/si/<keylist>', methods=['GET'])
def get_si(keylist):

    return 'Success'


# Initialize and start the web application
if __name__ == "__main__":
    app.run(host='0.0.0.0', port=5000)

wsgi.py

from expose import app

if __name__ == "__main__":
    app.run()

/ etc / systemd / system / vectorbot.service

[Unit]
Description=Gunicorn instance to serve vectorbot
After=network.target

[Service]
User=ec2-user
Group=ec2-user
WorkingDirectory=/home/ec2-user/projects/vectorbot
Environment="PATH=/home/ec2-user/projects/vectorbot/venv/bin"
ExecStart=/home/ec2-user/projects/vectorbot/venv/bin/gunicorn --workers 3 --bind unix:vectorbot.sock -m 007 wsgi:app

[Install]
WantedBy=multi-user.target

Служба успешно запускается без ошибок

В /var/log/nginx/error.log

2020/03/11 12:10:28 [crit] 13499#13499: *291 connect() to unix:/home/ec2-user/projects/vectorbot/vectorbot.sock failed (13: Permission denied) while connecting to upstream, client: #######, server: localhost, request: "GET /fasttext/lang/si/i%20have%20a%20question HTTP/1.1", upstream: "http://unix:/home/ec2-user/projects/vectorbot/vectorbot.sock:/fasttext/lang/si/i%20have%20a%20question", host: "#######"

В браузере

Код состояния 502

enter image description here

...