2013-08-07 18 views
6

Tôi đang thiết lập blog của mình trên phiên bản EC2 mới vì một trong các trang web trên máy chủ hiện đang lưu trữ nó đang bị DDoS. Tôi gặp rắc rối với nginx, vì tôi có thể xem tất cả các trang nhưng 403 trên chỉ mục hoặc xem chỉ mục nhưng 404 trên các trang (tùy thuộc vào cấu hình tôi đang sử dụng)403 bị cấm trên chỉ mục wordpress với nginx, phần còn lại của trang hoạt động tốt

Đây là của tôi nginx config:

server { 
    listen  80; 

    server_name www.test.com; 
    server_name test.com; 
    root /www/blog; 

    include conf.d/wordpress/simple.conf; 
} 

Và simple.conf:

location = /favicon.ico { 
      log_not_found off; 
      access_log off; 
    } 

    location = /robots.txt { 
      allow all; 
      log_not_found off; 
      access_log off; 
    } 

    location/{ 
      # This is cool because no php is touched for static content. 
      # include the "?$args" part so non-default permalinks doesn't break when using query string 
      try_files $uri $uri/ /index.php?$args; 
    } 

    location ~ \.php$ { 
      #NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini 
      include fastcgi.conf; 
      fastcgi_intercept_errors on; 
      fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock; 
    } 

    location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { 
      expires max; 
      log_not_found off; 
    } 

nếu tôi thay đổi try_files $ uri $ uri//index.php?$args; chỉ mục index.php, trang đầu sẽ hoạt động tốt và phần còn lại sẽ là 404. Nếu tôi rời khỏi nó như thế, trang đầu là 403.

Dưới đây là các bản ghi lỗi:

2013/08/07 19:19:41 [error] 25333#0: *1 directory index of "/www/blog/" is forbidden, client: 64.129.X.X, server: test.com, request: "GET/HTTP/1.1", host: "www.test.com" 

Đó thư mục là 755 người dùng nginx:

drwxr-xr-x 6 nginx nginx 4096 Aug 7 18:42 blog 

Có điều gì hiển nhiên tôi đang làm sai?

Cảm ơn!

Trả lời

17

Thêm index index.php; Trong khối máy chủ, nếu nó không hoạt động thì bạn cần phải loại bỏ các $uri/ bởi vì bạn không muốn làm một autoindex on


EDIT: Chỉ cần nhận thấy rằng bạn đã tìm ra vấn đề của bạn, vì vậy tôi sẽ thêm lý do đằng sau nó, lý do tại sao bạn cần autoindex on; là bởi vì không có nó nginx sẽ tuân theo các quy tắc try_files,

  1. Kiểm tra xem có tệp nào có tên / và dĩ nhiên là không thành công.
  2. Kiểm tra xem có thư mục có tên là / (bằng cách thêm gốc nó sẽ = /www/blog/), kiểm tra này sẽ thành công, do đó, nó sẽ cố gắng liệt kê nội dung của thư mục.
  3. Vì bạn không chỉ định autoindex on; nên theo mặc định nginx sẽ cấm danh sách thư mục, do đó, nó sẽ trả về lỗi 403 bị cấm.
  4. Phần còn lại của trang web hoạt động tốt vì nó không kiểm tra $uri/ hoặc không đạt được nó, bởi vì bạn có lẽ không có một thư mục có tên image.jpg hoặc stylesheet.css, vv
0

Dường như bạn không cho phép đối số được gửi tới CMS để điều này sẽ không hiển thị url này sẽ mang thông tin từ cơ sở dữ liệu và chuyển hướng bạn đến trang 403.

+0

Không chắc chắn những gì bạn có nghĩa là ở đó, Tôi đang gửi các đối số thông qua? $ Args? –

1

Hình như tôi cần index.php inded trong máy chủ {} định nghĩa và không có trong các vị trí {}

+0

lol vừa nhận ra bạn đã trả lời nó sau khi tôi trả lời, không để ý, đoán tôi sẽ sửa câu trả lời của tôi để giải thích tại sao. –

Các vấn đề liên quan