3

我已将服务器迁移到 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;
}
4

1 回答 1

1

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

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

因此,将有两个应用程序使用 nginx 作为反向代理运行,一个 nginxserver用于您的上述 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;
  }
}

如您所见,serverhttp括号内有两个声明。的每个声明都server应该包含您对 django 的配置和另一个用于 phpmyadmin 的配置。

2 个“虚拟主机”(“服务器”实例)由 nginx 处理。

于 2012-11-04T14:06:36.647 回答