Nginx + Django + Phpmyadmin配置

时间:2012-11-04 13:11:02

标签: django nginx phpmyadmin

我已将我的服务器迁移到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 个答案:

答案 0 :(得分:1)

这个问题应该属于http://serverfault.com

然而,您应该做的第一件事是为您的phpmyadmin配置一个单独的子域,以便于管理。

因此,将有两个使用nginx作为反向代理运行的应用程序,一个用于上述django应用程序的nginx server和另一个用于phpmyadmin的server(也称为虚拟主机),其配置与此类似: -

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的配置。

由nginx负责的2个“虚拟主机”(“服务器”实例)。