I have website that was created by a colleague that I’ve taken over. It’s been designed with Flask and Vue. I’ve been able to run this locally after some troubleshooting, but when trying to deploy this onto a server, I can’t get the site running.
I’ve followed numerous tutorials where I’ve used the following:
Gunicorn:
gunicorn --workers 1 --bind 0.0.0.0:5000 -m 777 wsgi:app
Config for nginx:
server {
listen 80;
server_name 192.168.1.1;
add_header Access-Control-Allow-Origin *;
# To allow POST on static pages
error_page 405 =200 $uri;
location / {
root frontend/dist;
try_files $uri $uri/ /index.html;
}
location /config {
include proxy_params;
proxy_pass http://0.0.0.0:5000;
}
}
Within my frontend App.vue
, I link to the backend - which I've tried:
backend_url: 'http://127.0.0.1:5000'
backend_url: 'http://192.168.1.1:5000'
Then when I load up 192.168.1.1, the frontend starts initially, but when it comes to communicating with the backend via different flask @app.routes, it stops.
I’ve also tried using a socket to connect between gunicorn and nginx, but I get the same issue.
When looking on the console in Chrome, I get:
POST http://192.168.1.1:5000/config net::ERR_CONNECTION_TIMED_OUT 192.168.1.1/:1 Uncaught (in promise) Error: A listener indicated an asynchronous response by returning true, but the message channel closed before a response was received
Whereas in Firefox, I get:
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://192.168.1.1:5000/config. (Reason: CORS request did not succeed). Status code: (null)
This is why I added add_header Access-Control-Allow-Origin *;
within my nginx config file
Any ideas?
CORS:
app = Flask(__name__)
app.config['CORS_HEADERS'] = 'Content-Type'
cors = CORS(app, resources={r"/*": {"origins": "*"}})