나는 몇 시간 동안 그것을 작동시키려고 노력해 왔습니다!
간단한 웹서버를 구축하고 싶습니다. 내 네트워크 파일은 /var/www
phpmyadmin에 있어야 합니다. 디렉토리를 만들었습니다 /var/phpmyadmin
. 이제 표준 방식으로 일반 웹 파일에 액세스하고 싶습니다.
예: 파일은 .phpmyadmin 섹션을 /var/www/test.php
통해 액세스할 수 있어야 하며 다음과 같아야 합니다 . 아래 구성을 사용하면 404가 표시됩니다. 그리고 이 URL은:http://localhost/test.php
http://localhost/phpmyadmin
http://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
. 물론 로컬 워크스테이션에서 말이죠.