Tôi đã cố gắng định cấu hình nhiều ứng dụng web trên máy chủ web nginx của mình nhưng tôi không thể làm việc với ứng dụng Laravel yêu cầu $ document_root được đặt thành thư mục công khai laravel. Tôi hiện đang cố gắng định cấu hình nó bằng cách sử dụng chỉ thị bí danh nhưng vì một lý do không rõ ràng điều này không hoạt động. Đây là những gì tôi đang cố gắng làm.Làm thế nào để cấu hình đúng chỉ thị bí danh trong nginx?
# Default server configuration
#
server {
listen 80;
# SSL configuration
#
listen 443 ssl;
error_log /var/log/nginx/error.log warn;
ssl_certificate /etc/nginx/ssl/server.crt;
ssl_certificate_key /etc/nginx/ssl/server.key;
set $root_path '/var/www/html';
root $root_path;
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html index.php;
server_name localhost;
location /paperwork {
alias /var/www/html/paperwork/frontend/public;
try_files $uri $uri/;
#location ~ \.php {
# fastcgi_split_path_info ^(.+\.php)(.*)$;
# fastcgi_pass unix:/var/run/php5-fpm.sock;
# include /etc/nginx/fastcgi_params;
# #fastcgi_param SCRIPT_FILENAME /var/www/html$fastcgi_script_name;
# #fastcgi_intercept_errors on;
#}
}
#location @paperwork {
# rewrite /paperwork/(.*)$ /paperwork/index.php/$1 last;
#}
location/{
}
location /wallabag {
try_files $uri $uri/ /index.php;
}
location /laverna {
try_files $uri/ /index.php;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
location ~ \.php$ {
# With php5-cgi alone:
#fastcgi_pass 127.0.0.1:9000;
# With php5-fpm:
fastcgi_split_path_info ^(.+\.php)(/.+)$;
#try_files $uri $uri/ =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
location ~ /\.ht {
deny all;
}
}
Để kiểm tra "bí danh" của tôi cấu hình tôi đặt một file 'test.php' trong /var/www/html/paperwork/frontend/public/test.php và cố gắng để truy cập nó thông qua https://IP/paperwork/test.php. Tôi gặp lỗi 404 và không có gì trong nhật ký lỗi nginx. Nếu tôi thử https://IP/paperwork/frontend/public/test.php trong trình duyệt, nó sẽ hiển thị tệp test.php mà không có lỗi. Không có gì thay đổi nếu tôi bỏ ghi chú dòng try_files ở vị trí php.
Nếu tôi sao chép test.php vào /var/www/html/paperwork/test2.php và truy cập https://IP/paperwork/test2.php tệp được hiển thị không có lỗi để tôi có thể thấy ở đây bí danh đó không hoạt động vì không có test2. php trong thư mục công cộng giấy tờ.
Tôi có thể có hành vi khác nếu tôi bỏ ghi chú vị trí php bên trong vị trí giấy tờ. Với điều này, các yêu cầu như https://IP/paperwork/test.php không hiển thị 404 nhưng màn hình trống.
Tôi đã trải qua rất nhiều diễn đàn/câu hỏi liên quan đến điều này, nhưng tôi không thể có được một cấu hình làm việc cho một công việc đơn giản như hiển thị test.php ...
Cảm ơn!
Điều này đã khiến tôi bối rối trong nhiều tháng, cảm ơn. – demure
Có! cảm ơn bạn. Khóa đã sử dụng '$ request_filename'. Mỗi ví dụ khác có 'fastcgi_param SCRIPT_FILENAME $ document_root $ fastcgi_script_name' nhưng không hiệu quả. – heisian