我已将我的服务器迁移到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;
}
答案 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个“虚拟主机”(“服务器”实例)。