No puedo por la vida de mí descubrir cómo implementar un sitio django en una ubicación no root con Nginx/fastcgi, p. http://localhost:8080/myproject/ en lugar de http://localhost:8080/; todos los ejemplos que he visto asumen que Apache o que están montando en la raíz del sitio. Esta es la parte relevante de mi nginx.conf
:Desplegando django bajo una sub URL con Nginx/Fastcgi
server {
listen 8080;
server_name localhost;
location /myproject/ {
# host and port to fastcgi server
fastcgi_pass 127.0.0.1:3030;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
#fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx/$nginx_version;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
}
}
Y un mínimo urls.py
:
from django.http import HttpResponse
from django.conf.urls.defaults import patterns
urlpatterns = patterns('',
(r'^hello$', lambda request: HttpResponse('Hello world!')),
)
Intentar acceder http://localhost:8080/myproject/hello da un 404. He intentado, sin éxito, todas las combinaciones de:
- Comentando/descomentando
fastcgi_param PATH_INFO $fastcgi_script_name;
- Comentando/descomentando
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
- Configuración
FORCE_SCRIPT_NAME = '/myproject/'
en settings.py.
@gsakkis, hicieron esto ayuda en absoluto? –
Me ayudó ... Recibí dos aplicaciones web en el mismo servidor {} en nginx.conf usando este método. pero mi problema es que ambos requieren una URL estática y de medios diferentes ... ¿qué hacer aquí? – codeVerine