Por favor, perdónenme si esto es un poco confuso, mis habilidades de DevOps/arquitectura son mínimas, por lo que no estoy muy seguro de la terminología correcta.
Tengo una aplicación de reacción alojada en AWS que quiero ubicar en la raíz mysite.com , así como en ciertos 'subdirectorios', por ejemplo, mysite.com/items y mysite.com/category .
Además, quiero tener un blog alojado en otro lugar pero accesible en mysite.com/blog y algunas páginas estáticas misceláneas como mysite.com/about , mysite.com/contact . Me gustaría que esas páginas estáticas se alojen en el mismo lugar (estoy pensando en webflow).
Esto parece una configuración un poco compleja, pero me pregunto cuál sería la mejor solución. ¿Funcionaría un proxy inverso con Nginx? Si es así, ¿cómo lo configuraría? ¿Existen otras soluciones 'sin servidor' que puedan funcionar?
¿Quizás haya una manera de enviar todo el tráfico al servidor de páginas estáticas a menos que sea la raíz o el /items o /category o /blog específicos?
Hola, una configuración básica podría verse así:
server { listen 8080; return 200 "Blog \n"; } server { listen 8081; return 200 "About and Contact \n"; } server { listen 80; location = /about { proxy_pass http://localhost:8081; } location /blog { proxy_pass http://localhost:8080; } }Déjame agregarle algo de texto :)
si solo desea tener una ubicación / sobre sin nada más en la ubicación, puede usar = /about
intentar agregar algo detrás /about como /about/foo resultará en un 404.
Si desea enviar el blog por proxy a otra ubicación, use /blog . Con esta configuración, puede agregar algo a su ubicación como /blog/test/ y seguirá respondiendo con un 200.
[root@localhost conf.d]# curl -v localhost/blog/test * About to connect() to localhost port 80 (#0) * Trying ::1... * Connection refused * Trying 127.0.0.1... * Connected to localhost (127.0.0.1) port 80 (#0) > GET /blog/test HTTP/1.1 > User-Agent: curl/7.29.0 > Host: localhost > Accept: */* > < HTTP/1.1 200 OK < Server: nginx/1.17.6 < Date: Tue, 17 Mar 2020 06:09:31 GMT < Content-Type: application/octet-stream < Content-Length: 12 < Connection: keep-alive < /blog/test * Connection #0 to host localhost left intactestá usando algo en su aplicación de reacción para enrutar el tráfico al objetivo correcto.
¡Hice esto para uno de mis proyectos y funciona muy bien!
Compartiré mi archivo sin adaptarlo a su pregunta solo como referencia general e idea.
const proxy = require('http-proxy-middleware'); module.exports = function (app) { app.use('/api', proxy({ target: 'http://localhost:8080', changeOrigin: true, })); app.use('/img', proxy({ target: 'http://localhost:8080', changeOrigin: true, })); app.use('/oauth', proxy({ target: 'http://localhost:8080', changeOrigin: true, })); };Este archivo (setupProxy.js) vive dentro del directorio thr src en el nivel raíz.
Solo sé sobre alguna integración con express ontop de node.js. Como el proxy está profundamente relacionado con el protocolo http, definitivamente necesita algún componente de servidor que comprenda el protocolo http.
He notado un par de desventajas durante los últimos meses usando un servidor web express como proxy. El almacenamiento en caché es más efectivo en el nivel de NGINX. Si la complejidad del enrutamiento aumenta, NGINX puede manejarlo mucho mejor.