Nginx 구성 파일은 다음과 같습니다.
http 블록 내부
server {
listen *:80 default_server;
server_name "";
# return 444;
root /var/www/default_server;
error_log /var/log/nginx/error.default_server.log debug;
access_log /var/log/nginx/access.default_server.log custom_made_access_log_1;
port_in_redirect on;
server_name_in_redirect on;
server_tokens on;
index index.html index.htm default.html default.htm index.php;
merge_slashes on;
location = /basic_status {
stub_status on;
allow 192.168.80.1;
deny all;
}
location = / {
}
location / {
try_files $uri $uri/ =404;
location ~* ^/phpmyadmin$ {
rewrite ^/(phpmyadmin)$ /$1/ last;
}
location ~* ^/(.+\.php)$ {
include fastcgi.conf;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors on;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
include fastcgi_params;
}
location ~* ^/(.+\.(png|swf|pdf|jpg|jpeg|gif|css|png|js|ico|html|htm|xml|txt|zip|rar|fla|mov|mp4))$ {
}
}
location /phpmyadmin/ {
alias /var/www/default_server/phpmyadmin/;
error_log /var/log/nginx/error.default_server.phpMyAdmin.log debug;
access_log /var/log/nginx/access.default_server.phpMyAdmin.log custom_made_access_log_1;
# try_files $uri $uri/ /phpmyadmin/index.php?$query_string;
location ~* ^/phpmyadmin/setup {
}
location ~* ^/phpmyadmin/(.+\.php)$ {
include fastcgi.conf;
fastcgi_split_path_info ^/phpmyadmin/(.+?\.php)(.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors on;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_index index.php;
include fastcgi_params;
}
location ~* ^/phpmyadmin/(.+\.(png|swf|pdf|jpg|jpeg|gif|css|png|js|ico|html|htm|xml|txt|zip|rar|fla|mov|mp4))$ {
#avoid processing of calls to unexisting static files
try_files $uri =404;
}
}
}
다음과 같은 2가지 경우가 있습니다.
사례 1:http://192.168.80.129/phpmyadmin/
사례 2:http://192.168.80.129/phpmyadmin
사례 1은 잘 작동합니다. 위치
location /phpmyadmin/
예상대로 작동합니다.
후행 슬래시가 없는 사례 2의 문제 릴레이입니다.
위의 구성에서 볼 수 있듯이:
서버 지시문에서 다음과 같이 "루트"를 구성했습니다.
root /var/www/default_server;
또한 위 구성에서 볼 수 있듯이 /phpmyadmin/ 위치 내부에 구성했습니다.
location /phpmyadmin/
다음과 같은:
alias /var/www/default_server/phpmyadmin/;
또한, 블록 위치 내부 ~* ^/phpmyadmin/(.+.php)$
location ~* ^/phpmyadmin/(.+\.php)$
나는 다음을 구성했다
fastcgi_split_path_info ^/phpmyadmin/(.+?\.php)(.*)$;
DEBUG 로그에서 볼 수 있는 내용은 다음과 같습니다.
일단 내가 찾아보면http://192.168.80.129/phpmyadmin 그런 다음 DEBUG LOG에서 다음을 볼 수 있습니다.
2020/12/12 15:40:10 [debug] 52078#0: *1 HTTP/1.1 404 Not Found
전체 로그 파일의 일부:
2020/12/12 15:40:10 [debug] 52078#0: *1 test location: "/"
2020/12/12 15:40:10 [debug] 52078#0: *1 test location: "phpmyadmin/"
2020/12/12 15:40:10 [debug] 52078#0: *1 test location: "basic_status"
2020/12/12 15:40:10 [debug] 52078#0: *1 test location: ~ "^/phpmyadmin$"
2020/12/12 15:40:10 [debug] 52078#0: *1 using configuration "^/phpmyadmin$"
2020/12/12 15:40:10 [debug] 52078#0: *1 http cl:-1 max:1048576
2020/12/12 15:40:10 [debug] 52078#0: *1 rewrite phase: 3
2020/12/12 15:40:10 [debug] 52078#0: *1 http script regex: "^/(phpmyadmin)$"
2020/12/12 15:40:10 [notice] 52078#0: *1 "^/(phpmyadmin)$" matches "/phpmyadmin", client: 192.168.80.1, server: , request: "GET /phpmyadmin HTTP/1.1", host: "192.168.80.129"
2020/12/12 15:40:10 [debug] 52078#0: *1 http script copy: "/"
2020/12/12 15:40:10 [debug] 52078#0: *1 http script capture: "phpmyadmin"
2020/12/12 15:40:10 [debug] 52078#0: *1 http script copy: "/"
2020/12/12 15:40:10 [debug] 52078#0: *1 http script regex end
2020/12/12 15:40:10 [notice] 52078#0: *1 rewritten data: "/phpmyadmin/", args: "", client: 192.168.80.1, server: , request: "GET /phpmyadmin HTTP/1.1", host: "192.168.80.129"
2020/12/12 15:40:10 [debug] 52078#0: *1 post rewrite phase: 4
2020/12/12 15:40:10 [debug] 52078#0: *1 uri changes: 11
2020/12/12 15:40:10 [debug] 52078#0: *1 test location: "/"
2020/12/12 15:40:10 [debug] 52078#0: *1 test location: "phpmyadmin/"
2020/12/12 15:40:10 [debug] 52078#0: *1 test location: ~ "^/phpmyadmin/setup"
2020/12/12 15:40:10 [debug] 52078#0: *1 test location: ~ "^/phpmyadmin/(.+\.php)$"
2020/12/12 15:40:10 [debug] 52078#0: *1 test location: ~ "^/phpmyadmin/(.+\.(png|swf|pdf|jpg|jpeg|gif|css|png|js|ico|html|htm|xml|txt|zip|rar|fla|mov|mp4))$"
2020/12/12 15:40:10 [debug] 52078#0: *1 using configuration "/phpmyadmin/"
2020/12/12 15:40:10 [debug] 52078#0: *1 rewrite phase: 1
2020/12/12 15:40:10 [debug] 52078#0: *1 test location: "/"
2020/12/12 15:40:10 [debug] 52078#0: *1 test location: "phpmyadmin/"
2020/12/12 15:40:10 [debug] 52078#0: *1 test location: ~ "^/phpmyadmin/setup"
2020/12/12 15:40:10 [debug] 52078#0: *1 test location: ~ "^/phpmyadmin/(.+\.php)$"
2020/12/12 15:40:10 [debug] 52078#0: *1 using configuration "^/phpmyadmin/(.+\.php)$"
2020/12/12 15:40:10 [debug] 52078#0: *1 event timer del: 18: 707626498
2020/12/12 15:40:10 [debug] 52078#0: *1 http process request line
2020/12/12 15:40:10 [debug] 52078#0: *1 http request line: "GET /themes/pmahomme/jquery/jquery-ui.css HTTP/1.1"
2020/12/12 15:40:10 [debug] 52078#0: *1 http uri: "/themes/pmahomme/jquery/jquery-ui.css"
2020/12/12 15:40:10 [debug] 52078#0: *1 http args: ""
2020/12/12 15:40:10 [debug] 52078#0: *1 http exten: "css"
2020/12/12 15:40:10 [debug] 52078#0: *1 posix_memalign: 00005626A1D05AF0:4096 @16
2020/12/12 15:40:10 [debug] 52078#0: *1 http process request header line
2020/12/12 15:40:10 [debug] 52078#0: *1 http header: "Host: 192.168.80.129"
2020/12/12 15:40:10 [debug] 52078#0: *1 http header: "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:83.0) Gecko/20100101 Firefox/83.0"
2020/12/12 15:40:10 [debug] 52078#0: *1 http header: "Accept: text/css,*/*;q=0.1"
2020/12/12 15:40:10 [debug] 52078#0: *1 http header: "Accept-Language: en-US,en;q=0.5"
2020/12/12 15:40:10 [debug] 52078#0: *1 http header: "Accept-Encoding: gzip, deflate"
2020/12/12 15:40:10 [debug] 52078#0: *1 http header: "Connection: keep-alive"
2020/12/12 15:40:10 [debug] 52078#0: *1 http header done
2020/12/12 15:40:10 [debug] 52078#0: *1 generic phase: 0
2020/12/12 15:40:10 [debug] 52078#0: *1 rewrite phase: 1
2020/12/12 15:40:10 [debug] 52078#0: *1 test location: "/"
2020/12/12 15:40:10 [debug] 52078#0: *1 test location: "phpmyadmin/"
2020/12/12 15:40:10 [debug] 52078#0: *1 test location: ~ "^/phpmyadmin$"
2020/12/12 15:40:10 [debug] 52078#0: *1 test location: ~ "^/(.+\.php)$"
2020/12/12 15:40:10 [debug] 52078#0: *1 test location: ~ "^/(.+\.(png|swf|pdf|jpg|jpeg|gif|css|png|js|ico|html|htm|xml|txt|zip|rar|fla|mov|mp4))$"
2020/12/12 15:40:10 [debug] 52078#0: *1 using configuration "^/(.+\.(png|swf|pdf|jpg|jpeg|gif|css|png|js|ico|html|htm|xml|txt|zip|rar|fla|mov|mp4))$"
2020/12/12 15:40:10 [debug] 52078#0: *1 http cl:-1 max:1048576
2020/12/12 15:40:10 [debug] 52078#0: *1 rewrite phase: 3
2020/12/12 15:40:10 [debug] 52078#0: *1 post rewrite phase: 4
2020/12/12 15:40:10 [debug] 52078#0: *1 generic phase: 5
2020/12/12 15:40:10 [debug] 52078#0: *1 generic phase: 6
2020/12/12 15:40:10 [debug] 52078#0: *1 generic phase: 7
2020/12/12 15:40:10 [debug] 52078#0: *1 generic phase: 8
2020/12/12 15:40:10 [debug] 52078#0: *1 access phase: 9
2020/12/12 15:40:10 [debug] 52078#0: *1 access phase: 10
2020/12/12 15:40:10 [debug] 52078#0: *1 access phase: 11
2020/12/12 15:40:10 [debug] 52078#0: *1 post access phase: 12
2020/12/12 15:40:10 [debug] 52078#0: *1 generic phase: 13
2020/12/12 15:40:10 [debug] 52078#0: *1 generic phase: 14
2020/12/12 15:40:10 [debug] 52078#0: *1 content phase: 15
2020/12/12 15:40:10 [debug] 52078#0: *1 content phase: 16
2020/12/12 15:40:10 [debug] 52078#0: *1 content phase: 17
2020/12/12 15:40:10 [debug] 52078#0: *1 content phase: 18
2020/12/12 15:40:10 [debug] 52078#0: *1 content phase: 19
2020/12/12 15:40:10 [debug] 52078#0: *1 content phase: 20
2020/12/12 15:40:10 [debug] 52078#0: *1 http filename: "/var/www/default_server/themes/pmahomme/jquery/jquery-ui.css"
2020/12/12 15:40:10 [debug] 52078#0: *1 add cleanup: 00005626A1DA7AD8
2020/12/12 15:40:10 [error] 52078#0: *1 open() "/var/www/default_server/themes/pmahomme/jquery/jquery-ui.css" failed (2: No such file or directory), client: 192.168.80.1, server: , request: "GET /themes/pmahomme/jquery/jquery-ui.css HTTP/1.1", host: "192.168.80.129"
2020/12/12 15:40:10 [debug] 52078#0: *1 http finalize request: 404, "/themes/pmahomme/jquery/jquery-ui.css?" a:1, c:1
2020/12/12 15:40:10 [debug] 52078#0: *1 http special response: 404, "/themes/pmahomme/jquery/jquery-ui.css?"
2020/12/12 15:40:10 [debug] 52078#0: *1 http set discard body
2020/12/12 15:40:10 [debug] 52078#0: *1 xslt filter header
2020/12/12 15:40:10 [debug] 52078#0: *1 HTTP/1.1 404 Not Found
Server: nginx/1.18.0
Date: Sat, 12 Dec 2020 13:40:10 GMT
Content-Type: text/html
Content-Length: 153
Connection: keep-alive
문제의 원인이 다음 행부터 시작되는 것을 볼 수 있습니다
2020/12/12 15:40:10 [debug] 52078#0: *1 http request line: "GET /themes/pmahomme/jquery/jquery-ui.css HTTP/1.1"
2020/12/12 15:40:10 [debug] 52078#0: *1 http uri: "/themes/pmahomme/jquery/jquery-ui.css"
보시다시피 문제는 다음과 같습니다.
"GET /themes/pmahomme/jquery/jquery-ui.css HTTP/1.1"
요청이 된 이유
/themes/pmahomme/jquery/jquery-ui.css
그리고 그렇지 않다
/phpmyadmin/themes/pmahomme/jquery/jquery-ui.css
그래서 이것이 내가 구현하고 싶은 방식이라고 가정합니다. 문제를 극복하기 위해 내가 무엇을 해야 하는지.
위치 블록이 있는 경우
location / {
try_files $uri $uri/ =404;
location ~* ^/phpmyadmin$ {
rewrite ^/(phpmyadmin)$ /$1/ last;
}
}
요청을 처리하면 다시 쓰기가 제대로 작동하지만 파일 시스템이 다음 구성을 사용하여 파일을 찾으려고 하는 것으로 나타났습니다.
root /var/www/default_server;
별칭 구성을 사용하는 대신
alias /var/www/default_server/phpmyadmin/;
위치 블록 내부에 상주하는
location /phpmyadmin/
답변1
내가 올바르게 이해했다면 .NET에서 PHPMyAdmin을 사용하고 싶을 것입니다 /phpmyadmin/
. 에서 /phpmyadmin
으로 리디렉션을 전달하고(아래의 콘텐츠를 전달하는 대신) 작업을 완료하는 것이 어떻습니까 ?/phpmyadmin
/phpmyadmin/
location /phpmyadmin
{
return 303 https://example.com/phpmyadmin/;
}
테스트되지 않았습니다.
답변2
마지막으로 내가 한 일은 다음과 같은 접근 방식입니다.
location ~* ^/phpmyadmin$ {
return 301 http://$host:$server_port/phpmyadmin/;
}
location ~* ^/phpmyadmin/$ {
return 301 http://$host:$server_port/phpmyadmin/;
}
이를 통해 대문자와 소문자를 특정 URL로 리디렉션할 수 있었습니다.