我想通过Nginx运行几个虚拟主机,每个通过fcgi服务一个不同的django应用程序。 这可能吗? 如果是这样,有没有人有好的资源在哪里/如何开始? Nginx的文档似乎大部分的例子,但没有一个特定的configuration,我正在尝试…
将os.popen命令转换为一个subprocess.Popen实例
在Windows 10中使用pg:push for Heroku
无法让Nginx内部redirect工作
最近有两个关于设置Nginx的相当不错的博客文章,但都使用Nginx来提供静态(或缓存)的内容和Apache + mod_wsgi来服务Django。 我更喜欢这个,因为mod_wsgi使得进程管理比fcgi(其他优点)更容易。
无论如何,这里是帖子:
Django和Ubuntu Intrepid年鉴
django,Nginx,memcached – 动态三重奏
编辑:好的我挖出了一个旧的tar文件与我的Nginx + django +虚拟主机配置文件从一年前,我切换到Apache + mod_wsgi。 这是一个开发机器,所以你要调整工人,连接等
Nginx.conf:
user Nginx Nginx; worker_processes 2; error_log /var/log/Nginx/error_log info; events { worker_connections 1024; use epoll; } http { include /etc/Nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] ' '"$request" $status $bytes_sent ' '"$http_referer" "$http_user_agent" ' '"$gzip_ratio"'; client_header_timeout 3m; client_body_timeout 3m; send_timeout 3m; connection_pool_size 256; client_header_buffer_size 1k; large_client_header_buffers 4 2k; request_pool_size 4k; gzip on; gzip_min_length 1100; gzip_buffers 4 32k; gzip_types text/plain text/html application/x-javascript text/xml text/css; output_buffers 4 32k; postpone_output 1460; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 75 20; ignore_invalid_headers on; include vhosts.d/*.conf; }
所以,主要的Nginx.conf包含了vhosts.d /子目录中的每个文件。 我的一个文件是在localhost上运行PHP(可能是运行PHPMyAdmin),如下所示:
vhosts.d / 00_localhost:
server { listen 127.0.0.1:80; server_name localhost; access_log /var/log/Nginx/localhost.access_log main; error_log /var/log/Nginx/localhost.error_log info; root /var/www/localhost/htdocs; index index.PHP index.html index.htm; location ~ .PHP$ { fastcgi_pass 127.0.0.1:8888; fastcgi_index index.PHP; fastcgi_param SCRIPT_FILENAME /var/www/localhost/htdocs$fastcgi_script_name; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; } }
然后是一个本地的Django开发服务器,像这样:
50_django.local:
server { listen 80; server_name django.local; access_log /var/log/Nginx/django.access.log main; error_log /var/log/Nginx/django.error.log info; root /var/www/django.local; location ~* ^.+.(mpg|avi|mp3|swf|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|txt|tar|mid|midi|wav|rtf|mpeg)$ { access_log off; break; } location ~* ^.+.(jpg|jpeg|gif|png|ico|css|bmp|js)$ { expires 30d; break; } location / { fastcgi_pass unix:/var/www/django.local/server.sock; include fastcgi.conf; } location ^~ /admin/ { fastcgi_pass unix:/var/www/django.local/server.sock; include fastcgi.conf; access_log off; auth_basic "Welcome to admin"; } }
最后,每个虚拟服务器都为每个位置包含一个fastcgi.conf。
fastcgi.conf:
fastcgi_pass_header Authorization; fastcgi_intercept_errors off; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param QUERY_STRING $query_string; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param SERVER_NAME $server_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param REMOTE_USER $remote_user; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_SOFTWARE "Nginx"; fastcgi_param GATEWAY_INTERFACE "CGI/1.1"; fastcgi_param UID_SET $uid_set; fastcgi_param UID_GOT $uid_got;
我不知道以上所有都是必需的,但这是我切换到mod_wsgi的另一个原因…卓越的支持和文档:)
由于这个问题被问到有人创建了一个pip可安装的django包,它会从你的settings.py中为你生成一个apache或Nginx的vhost文件
pip install django-vhost
看看这里: https : //bitbucket.org/djangostars/django-vhost
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。