편집하다:

편집하다:

나는 몇 시간 동안 그것을 작동시키려고 노력해 왔습니다!

간단한 웹서버를 구축하고 싶습니다. 내 네트워크 파일은 /var/wwwphpmyadmin에 있어야 합니다. 디렉토리를 만들었습니다 /var/phpmyadmin. 이제 표준 방식으로 일반 웹 파일에 액세스하고 싶습니다.
예: 파일은 .phpmyadmin 섹션을 /var/www/test.php통해 액세스할 수 있어야 하며 다음과 같아야 합니다 . 아래 구성을 사용하면 404가 표시됩니다. 그리고 이 URL은:http://localhost/test.php
http://localhost/phpmyadminhttp://localhost/phpmyadmin/index.php

이를 위해 nginx의 site-availble 폴더에 다음 파일을 만들었습니다.

server {
  listen 80; ## listen for ipv4; this line is default and implied
  listen [::]:80 default_server ipv6only=on; ## listen for ipv6

  root /var/www;
  index index.html index.htm index.php;

  try_files $uri $uri/ $uri/index.html $uri/index.htm $uri/index.php;

  # This didn't work
  location /phpmyadmin/ {
     alias /var/phpmyadmin;
  }

  # And this did neither. (Never used both at the same time!)
  location /phpmyadmin/ {
     root /var;
  }

  location ~ \.php$ {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

    # With php5-cgi alone:
    #fastcgi_pass 127.0.0.1:9000;
    # With php5-fpm:
    fastcgi_pass unix:/var/run/php5-fpm.sock;
    fastcgi_index index.php;
    include fastcgi_params;
  }

  location ~ /\.ht {
    deny all;
  }
}

내가 뭘 잘못했나요?

편집하다:

흥미롭게도 이는 작동합니다(루트( http://localhost)에 유효함).

  root /var/www/htdocs;

  index index.php index.html index.htm;

  location /phpmyadmin/ {
    root /var/www/phpmyadmin;
  }

그리고 이것은 그렇지 않습니다:

  index index.php index.html index.htm;

  location / {
    root /var/www/htdocs;
  }

  location /phpmyadmin/ {
    root /var/www/phpmyadmin;
  }

phpmyadmin이 여전히 작동하지 않습니다!

답변1

귀하의 목표는 phpMyAdmin 설치에서 "일반" 웹 파일을 완전히 분리하는 것입니다.

Nginx의 각 서버 구성에는 웹 루트가 하나만 있을 수 있고 있어야 한다는 점을 강조해야 합니다. 즉, 다음과 같은 옵션이 있습니다.

  • 귀하의 경우 웹루트 아래 디렉토리에 phpMyAdmin을 설치하십시오 /var/www/phpmyadmin.http://localhost/phpmyadmin

    이것은 가장 간단한 구성이며 완전성을 위해(그리고 검색 엔진 사용자를 위해) 여기에 포함시켰습니다.

  • webroot 외부 디렉터리에 phpMyAdmin을 설치한 다음 phpmyadmin해당 디렉터리를 가리키는 webroot라는 이름의 심볼릭 링크를 만듭니다. 이 경우 disable_symlinks off서버 구성에 지정되어 있는지 확인해야 합니다 .

  • 서로 다른 포트, 서로 다른 웹 루트를 사용하여 수신하고 Proxy_pass 지시문을 통해 통신하는 2개의 서버 구성을 생성하여 동일한 가상 호스트에서 분리를 달성할 수 있습니다. 이 구성의 기본 개요는 다음과 같습니다.

    server {
        listen   80;
        server_name localhost;
        root /var/www/htdocs;
        index index.php index.html index.htm;
    
        location /phpmyadmin {
            proxy_pass http://127.0.0.1:8080/;
        }
    
        # ...Add more location directives, php support, etc...
    }
    
    server {
        listen 8080;
        server_name localhost;
        root /var/www/phpmyadmin;
        index index.php index.html index.htm;
    
        # ...Specify additional location directives, php support, etc...
    }
    

    /phpmyadmin이 경우 phpMyAdmin에 대한 모든 요청은 포트 80에서 수신하는 서버 인스턴스를 통해 포트 8080에서 수신하는 서버 인스턴스 로 투명하게 전달됩니다 .

  • server_name마지막으로 동일한 포트에서 수신하지만 지시문과 위치가 root다른 2개의 서버 구성을 생성하여 서로 다른 가상 호스트를 분리 할 수 있습니다 . 예를 들어, 다음과 같은 기본 개요가 있습니다.

    server {
        listen   80;
        server_name dev.local;
        root /var/www/htdocs;
        index index.php index.html index.htm;
    
        # ...Add more location directives, php support, etc...
    }
    
    server {
        listen   80;
        server_name phpmyadmin.local;
        root /var/www/phpmyadmin;
        index index.php index.html index.htm;
    
        # ...Specify additional location directives, php support, etc...
    }
    

그런 다음 에 다음 항목을 추가하여 진행할 수 있습니다 /etc/hosts.

127.0.0.1    dev.local
127.0.0.1    phpmyadmin.local

http://dev.local그런 다음 phpMyAdmin 인스턴스를 통해 파일에 액세스 할 수 있습니다 http://phpmyadmin.local. 물론 로컬 워크스테이션에서 말이죠.

관련 정보