Nginx sert des fichiers statiques pour l'application Flask 404

J'ai essayé beaucoup de solutions d'autres messages, mais il semble que je ne travaille pas avec moi, je reçois toujours

404

Erreur lors d'essayer de résoudre

nginx

Servir des fichiers statiques de mon

flask

Application. Quelque part entre toutes ces tentatives pour la lancer, j'ai aussi eu

403

, Mais je ne peux pas le restaurer. Ceci est mon installation actuelle:

L'application est dans:

~/development/Python/flask_nginx_gunicorn/

, qui devrait être un projet de test pour le lancement de tout, compréhension nginx etc. Il a la structure suivante:


Donc, il n'y a rien qu'un fichier nommé

app.py

, qui met en place quelques itinéraires et

index.html

dans

static

dossier.

J'ai mis en place la mienne

nginx

de la manière suivante:


/etc/nginx/nginx.conf

Avec le contenu suivant:

user  nginx;
worker_processes auto;

error_log /var/log/nginx/error.log warn;
pid /run/nginx.pid;

events {
worker_connections 1024;
}

http {
include /etc/nginx/mime.types;
default_type application/octet-stream;

log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;

sendfile on;
#tcp_nopush on;

keepalive_timeout 65;

include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*;
}

En fin de compte, il y a une inclusion pour

sites-enabled

sous-répertoire. Dans ce catalogue, j'ai un fichier nommé

flask_project

. Dans ce fichier, j'ai la configuration suivante de mon projet:

server {

root /home/xiaolong/development/Python/flask_nginx_gunicorn/;

server_name localhost;

# LISTENING ON WHICH PORTS?
listen localhost:7777;

location / {
proxy_pass [url=http://127.0.0.1:8080;]http://127.0.0.1:8080;[/url]
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}

location /static/ {
autoindex on;
root /home/xiaolong/development/Python/flask_nginx_gunicorn/;
}
}

j'ai commencé

nginx

Utilisation de la commande

systemctl start nginx

. Quand ça marche, et je fais

ps -aux | grep nginx

, Je reçois le résultat suivant:

root     17748  1.2  2.5 1607328 102772 pts/1  Sl   20:45   0:07 /usr/local/sublime_text_3/sublime_text /etc/nginx/nginx.conf
root 18762 0.0 0.0 122720 2880 ? Ss 20:53 0:00 nginx: master process /usr/sbin/nginx
nginx 18763 0.0 0.1 124808 7916 ? S 20:53 0:00 nginx: worker process
nginx 18764 0.0 0.1 124808 7916 ? S 20:53 0:00 nginx: worker process
nginx 18765 0.0 0.1 124808 7916 ? S 20:53 0:00 nginx: worker process
nginx 18766 0.0 0.1 124808 7916 ? S 20:53 0:00 nginx: worker process
root 18988 0.0 0.0 111032 1792 pts/0 S+ 20:54 0:00 tail -f 10 /var/log/nginx/error.log
root 19001 0.0 0.0 115820 2396 pts/1 S+ 20:55 0:00 grep --color=auto nginx

Donc, je sais que ça marche. J'avais l'habitude d'avoir une erreur dans le journal, me disant

nginx

Échec de la liaison avec un port spécifique, qui a été causé

SELinux

Autoriser la liaison uniquement à certains ports. Je l'ai corrigé avec l'équipe

semanage port --add --type http_port_t --proto tcp 7777

.

Après chaque changement, j'ai toujours couru

systemctl restart nginx

, Recommencer

nginx

Le serveur afin qu'il puisse redémarrer sa configuration.

j'utilise

gunicorn app:app -b localhost:8080

Commencer mon application de décharge.

Quand j'ouvre URL

[url=http://localhost:8080/static/]http://localhost:8080/static/[/url]

Je suis dans le navigateur

404

et le magazine que j'ai lu en utilisant

tail -f 10 /var/log/nginx/error.log

Déclare l'absence de nouvelles erreurs. Cependant, l'application flask Cela fonctionne que je peux vérifier en cliquant sur le lien:

[url=http://localhost:8080/]http://localhost:8080/[/url]

et

[url=http://localhost:8080/data]http://localhost:8080/data[/url]

, Qui fonctionnent les deux bien. Cependant, dès que le contenu statique du catalogue statique apparaît, je reçois

404

.

Mes hypothèses sont les suivantes:

D'une certaine manière

nginx

Ils ne lui parlent pas et il ne connaît pas la demande de contenu du dossier statique.

D'une manière ou d'une autre, les chemins ne sont toujours pas corrects.

Il y a un autre problème qui l'empêche d'obtenir un fichier pour un navigateur et de ne pas l'enregistrer.

J'ai essayé de le lancer pendant deux jours, mais aucune des configurations trouvées par moi n'a pas fonctionné. J'ai également essayé les deux équipes qui ont été offertes à d'autres endroits:

Changer de manière récursive le contexte de la sécurité du catalogue:


chcon -Rt httpd_sys_content_t /home/xiaolong/development/Python/flask_nginx_gunicorn/


Permettre un démon http Connecter sur le réseau (???)


setsebool -P httpd_can_network_connect 1


Quel est le problème avec ma configuration?

Information additionnelle

Dans mon

/etc/nginx/

Catalogue J'ai la structure suivante:

une

nginx.conf

déposer

subdirectoriel

sites-available

contenant uniquement la configuration de mon application de décharge

subdirectoriel

sites-enabled

Contenant un lien vers mon fichier de configuration pour les applications de la fiole dans

sites-available

Je parviens

Fedora 22

Ici.
Invité:

Agathe

Confirmation de:

À l'heure actuelle, il est plus d'un an, alors je suis sûr que vous vous êtes gêné, mais au cas où quelqu'un le voit:

Nginx Écouter

localhost:7777

, Mais votre URL mène au port 8080, Où est votre serveur Gunicorn. C'est pourquoi vous pouvez accéder à votre application. Flask (desservis gunicorn), Mais pas à son contenu statique (desservis ngninx). C'est pourquoi vous ne recevez rien dans des magazines nginx. Si vous allez à

[url=http://localhost:7777/]http://localhost:7777/[/url]

, nginx doit réussir votre demande à votre demande Flask, et

[url=http://localhost:7777/static/]http://localhost:7777/static/[/url]

Doit passer au contenu statique.

Pour répondre aux questions, connectez-vous ou registre