Tengo la siguiente configuración de nginx que funciona bien. Tengo una API (Expressjs) en la ubicación /api y un Desarrollo Frontend (Vuejs) en /:
server { server_name example.com www.example.com; root /var/www/domain.com/public_html; index index.html index.htm; location / { try_files $uri $uri/ /index.html =404; } location /api { proxy_set_header 'Access-Control-Allow-Origin' 'https://example.com'; proxy_set_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE'; proxy_set_header 'Access-Control-Allow-Headers' 'X-Requested-With,Accept,Content-type,Origin'; proxy_pass http://127.0.0.1:8000; proxy_redirect off; proxy_buffering on; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header origin 'https://example.com'; } En mi API tengo una carpeta pública ( public/storage/ ) donde puedo almacenar imágenes. Pero cuando trato de acceder a esa carpeta, tengo un error 404. ¿Cómo puedo configurar mi servidor nginx para dar acceso a la carpeta de almacenamiento?
Tenga en cuenta que el URI de la solicitud es: http://example.com/api/public/storage/image.jpg
Entonces la solicitud del proxy también será la misma. p.ej
http://127.0.0.1:8000/api/public/storage/image.jpg
Si desea cambiar eso, debe agregar URI a la directiva proxy_pass en sí. p.ej
proxy_pass http://127.0.0.1:8000/public/; .
que asignará las solicitudes a:
http://127.0.0.1:8000/public/public/storage/image.jpg
(Hay doble public intencionalmente.)