Nginx + Django + Phpmyadmin 配置
Posted
技术标签:
【中文标题】Nginx + Django + Phpmyadmin 配置【英文标题】:Nginx + Django + Phpmyadmin Configuration 【发布时间】:2012-10-24 12:04:58 【问题描述】:我已将服务器迁移到 amazon ec2,并尝试在那里设置以下环境:
nginx 在前端提供静态内容,传递给 django 获取动态内容。我也想在这个设置中使用 phpmyadmin。
我不是服务器管理员,所以我只是按照一些教程来让 nginx 和 django 启动并运行。但是我已经工作了两天,试图将 phpmyadmin 挂接到此设置,但无济于事。我现在正在发送我当前的服务器配置,我如何在这里为 phpmyadmin 提供服务?
server
listen 80;
server_name localhost;
access_log /opt/django/logs/nginx/vc_access.log;
error_log /opt/django/logs/nginx/vc_error.log;
# no security problem here, since / is always passed to upstream
root /opt/django/;
# serve directly - analogous for static/staticfiles
location /media/
# if asset versioning is used
if ($query_string)
expires max;
location /admin/media/
# this changes depending on your python version
root /path/to/test/lib/python2.7/site-packages/django/contrib;
location /static/
# if asset versioning is used
if ($query_string)
expires max;
location /
proxy_pass_header Server;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_connect_timeout 10;
proxy_read_timeout 10;
proxy_pass http://localhost:8000/;
# what to serve if upstream is not available or crashes
error_page 500 502 503 504 /media/50x.html;
【问题讨论】:
【参考方案1】:这个问题应该属于http://serverfault.com
尽管如此,您应该做的第一件事是为您的 phpmyadmin 配置一个单独的子域,以便于管理。
因此将有两个应用程序使用 nginx 作为反向代理运行,一个 nginx server
用于您的上述 django 应用程序,另一个 server
(也称为虚拟主机)用于您的 phpmyadmin,其配置类似于:-
server
server_name phpmyadmin.<domain.tld>;
access_log /srv/http/<domain>/logs/phpmyadmin.access.log;
error_log /srv/http/<domain.tld>/logs/phpmyadmin.error.log;
location /
root /srv/http/<domain.tld>/public_html/phpmyadmin;
index index.html index.htm index.php;
location ~ \.php$
root /srv/http/<domain.tld>/public_html/phpmyadmin;
fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /srv/http/<domain.tld>/public_html/phpmyadmin/$fastcgi_script_name;
include fastcgi_params;
您的每个server
配置都可以通过server_name
配置指向不同的域名。在这个例子中,server_name phpmyadmin.<domain.tld>;
这是一个取自http://wiki.nginx.org/ServerBlockExample的例子
http
index index.html;
server
server_name www.domain1.com;
access_log logs/domain1.access.log main;
root /var/www/domain1.com/htdocs;
server
server_name www.domain2.com;
access_log logs/domain2.access.log main;
root /var/www/domain2.com/htdocs;
如您所见,server
大括号内有两个声明 http
。 server
的每个声明都应包含您对 django 的配置和另一个用于 phpmyadmin 的配置。
2 个“虚拟主机”(“服务器”实例)由 nginx 处理。
【讨论】:
您好,谢谢。我是这个主题的新手,你能更具体一点吗?我需要创建两个配置文件吗?我需要做其他事情才能将它们作为反向代理运行吗?以上是关于Nginx + Django + Phpmyadmin 配置的主要内容,如果未能解决你的问题,请参考以下文章