2017-10-13 14 views
0

Application Stack:Ngnix convertit code personnalisé http à 502 Passerelle

  • cadre: Rails, 5.1
  • Reverse Proxy: Nginx, 1.10.3
  • App serveur: passager, 5.1.5

Je vais avoir mon application API Rails 5 qui fonctionne derrière le proxy inverse Ngnix. Quelques-unes de mes demandes ont codes http personnalisés. 2000, 2003 etc.

Mais le problème est que Ngnix est en train de convertir les réponses personnalisées du serveur en 502 et en envoyant ainsi Bad Gateway. Je n'ai encore rien trouvé d'utile. Tout pointeur doit être apprécié. Merci.

bloc serveur Nginx:

server { 
    listen 80; 
    server_name sport-staging.sports.com; 
    passenger_enabled on; 
    passenger_app_env staging; 
    root /var/www/sport/current/public; 
} 

Répondre

0

Tout d'abord - êtes-vous sûr que le changement de code par défaut, votre application fonctionne parfaitement sans aucun problème? Il suffit de vérifier que ce problème est certain dans les codes personnalisés. Mon opinion est que vous ne devez JAMAIS définir n'importe quel type de vos codes HTTP personnalisés. Si vous avez un tel besoin, dans 99,99%, vous faites quelque chose de mal. Pensez, que cette application sera traitée par d'autres développeurs à l'avenir. Comment peuvent-ils comprendre ce que signifie le code de 2003?

Ma recommandation est plutôt à la recherche d'un nginx hacks ou de modifier les paramètres, vous devriez mieux standardiser votre application. Les codes HTTP existants sont déjà suffisants pour gérer tout type de choses.

En outre, en tant que solution, vous pouvez utiliser des types de codes spécifiques à l'application dans la réponse JSON à cette fin.

+0

J'ai déjà eu une discussion avec une autre équipe concernant les codes personnalisés, mais ils sont catégoriques. Donc, je ne peux pas aider à ça. Et évidemment, je suis en train de gratter la documentation de Nginx pour l'aider. Merci quand même. – Sachin

+0

@Sachin Je suis très contrarié d'entendre cela. Montrez-leur votre fil: D – AntonTkachov

+0

La dernière chose que je peux faire est de créer une couche dans mon application pour mapper les codes personnalisés d'autres équipes sur les codes HTTP standard, puis de les suivre pour chaque requête impliquant ces codes. – Sachin