Điểm:0

VPS với Ubuntu 18.04 Tải xuống NGINX PHP FILE

lá cờ cn

Tôi có một VPS với:

  • Ubuntu 18.04
  • Nginx
  • Php7.2-fpm

Máy chủ chạy dự án Ruby on Rails dưới dạng homeurl (example.com) và wordpress dưới dạng thư mục (example.com/blog) . Đầu tiên, VPS được cấu hình với Apache2, mọi thứ đều hoạt động tốt, cho đến khi tôi phải tích hợp trò chuyện trực tiếp. Phải chuyển sang Nginx cho Action Cable.

Bây giờ, ứng dụng trò chuyện hoạt động tốt, trên RoR, nhưng nếu tôi cố truy cập vào blog, tôi tải xuống tệp index.php, thì nó không thực thi.

Đây là conf mặc định nginx của tôi:

# Bạn nên xem URL sau để hiểu rõ
# tệp cấu hình Nginx để giải phóng hoàn toàn sức mạnh của Nginx.
# https://www.nginx.com/resources/wiki/start/
# https://www.nginx.com/resources/wiki/start/topics/tutorials/config_pitfalls/
# https://wiki.debian.org/Nginx/DirectoryStructure
#
# Trong hầu hết các trường hợp, quản trị viên sẽ xóa tệp này khỏi các trang web đã bật/ và
# để nó làm tài liệu tham khảo bên trong các trang web có sẵn, nơi nó sẽ tiếp tục tồn tại
# được cập nhật bởi nhóm đóng gói nginx.
#
# Tệp này sẽ tự động tải các tệp cấu hình do người khác cung cấp
# ứng dụng, chẳng hạn như Drupal hoặc Wordpress. Các ứng dụng này sẽ được thực hiện
# có sẵn bên dưới đường dẫn có tên gói đó, chẳng hạn như /drupal8.
#
# Vui lòng xem /usr/share/doc/nginx-doc/examples/ để biết thêm các ví dụ chi tiết.
##

# Cấu hình máy chủ mặc định
#

người phục vụ { 

        nghe 80; ## lắng nghe ipv4; dòng này là mặc định và ngụ ý
        lắng nghe [::]:80 default_server ipv6only=on; ## lắng nghe ipv6
        chỉ mục index.php index.html index.htm index.nginx-debian.html;
        máy chủ_tên máy chủ cục bộ; 
        nghe 443 ssl default_server;
        lắng nghe [::]:443 ssl default_server;
        ssl_certificate /etc/letsencrypt/live/asdfsf.net/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/sdafasdf.net/privkey.pem;
        gốc /var/www/html/công khai;
        hành khách được bật;
        hành khách_ruby /usr/local/bin/ruby;

vị trí /var/www/html/công khai {
        try_files $uri $uri/ =404;
    }

    

vị trí ~ ^/blog(/.*|$) {

 gốc /var/www/html/công khai/blog;
        
         try_files $uri $uri/ /blog/index.php?$args;
        hành_khách tắt;       
        chỉ số index.php;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;

        }

vị trí ~ \.php$ {
                bao gồm đoạn trích/fastcgi-php.conf;
                fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
   
        }


}

Đã dành 3 đêm để khắc phục sự cố, tôi không thể hiểu đúng. Bất kỳ gợi ý là rất hoan nghênh. Cảm ơn bạn

Điểm:1
lá cờ gr

Bạn có hai vị trí phù hợp với biểu thức chính quy và bạn không có fastcgi_pass chỉ thị trong cái đầu tiên. Vị trí khớp Regex được kiểm tra từ vị trí đầu tiên đến vị trí cuối cùng, vì vậy vị trí thứ hai (nơi bạn có fastcgi_pass chỉ thị) sẽ không bao giờ đạt được. Điều đó có nghĩa là bất kỳ tệp PHP nào được truy cập bằng /Blog/ Tiền tố URI sẽ được coi là một tệp đơn giản và sẽ không được chuyển đến phần phụ trợ PHP-FPM để thực thi. Thay vào đó, bạn có thể sử dụng hai vị trí lồng nhau:

vị trí ~ ^/blog(/.*|$) {
    hành_khách tắt;       
    chỉ số index.php;
    try_files $uri $uri/ /blog/index.php?$args;
    vị trí ~ \.php$ {
        bao gồm đoạn trích/fastcgi-php.conf;
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        fastcgi_param DOCUMENT_ROOT $realpath_root;
        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
    }
}

Bạn không cần phải xác định gốc /var/www/html/công khai/blog; cho vị trí này. bạn đã có gốc /var/www/html/công khai; ở cấp trên, vì vậy nginx sẽ tìm kiếm tệp index.php yêu cầu như /blog/index.php bên trong /var/www/html/công khai/blog thư mục (xem sự khác biệt giữa nguồn gốcbí danh chỉ thị nginx).

Mihai Andrei Maria avatar
lá cờ cn
Bây giờ nó là 404 Không tìm thấy.
Ivan Shatsky avatar
lá cờ gr
Nếu `index.php` của bạn nằm trong thư mục `/var/www/html/public/blog`, hãy xóa chỉ thị `root` khỏi vị trí này.
Mihai Andrei Maria avatar
lá cờ cn
Cảm ơn bạn rất nhiều vì nỗ lực của bạn. Tôi đã ở cuối quyền hạn của tôi. Trân trọng !
Ivan Shatsky avatar
lá cờ gr
Đã thêm một số giải thích. Tôi cũng khuyên bạn nên đọc [điều này](https://serverfault.com/tour#:~:text=The%20person%20who%20asked%20can%20mark%20one%20answer%20as%20%22accepted%22.) :)

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.