2010-10-14 40 views
8

Tôi đã thiết lập nginx 0.7.67 trên Ubuntu10.10 cùng với php-cli. Tôi đang cố gắng để có được khung điều khiển phía trước dựa trên PHP của tôi để chạy, nhưng tất cả các trang ngoại trừ index.php đưa ra một lỗi 403.Nginx cung cấp lỗi 403 cho các tệp CSS/JS

Ex:

  1. http://mysite.com/styles/style.css - 403 Forbidden
  2. http://mysite.com/scripts/script.css - 403 Forbidden
  3. http://mysite.com/index.php - Làm việc

My /etc/nginx/sites-enabled/default là như sau

server { 
    listen   80; 
    server_name  mysite.com; 

    access_log  /var/log/nginx/access.log; 
    error_log  /var/log/nginx/error.log warn; 

    index   index.php index.html; 
    root  /full/path/to/public_html; 

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


    location ~ index.php { 
      include  /etc/nginx/fastcgi_params; 
      keepalive_timeout 0; 
      fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
      fastcgi_pass 127.0.0.1:9000; 
    } 

} 

Bất kỳ đề xuất nào về cách sửa lỗi ở trên?

PS: Đây là sự xâm nhập từ nhật ký lỗi

2010/10/14 19:56:15 [error] 3284#0: *1 open() "/full/path/to/public_html/styles/style.css" 
failed (13: Permission denied), client: 127.0.0.2, server: quickstart.local, 
request: "GET /styles/style.css HTTP/1.1", host: "mysite" 
+2

. Đó là sự cho phép của Linux. Một trong những thư mục cấp cao nhất không có quyền "r" cho người khác. Vấn đề đã được giải quyết. – Adil

Trả lời

16

Đã xảy ra sự cố tương tự. Cố định nó bằng cách đơn giản thiết lập quyền hạn trên các tệp và thư mục CSS và JS của tôi. Hãy cẩn thận về việc thiết lập quyền! Nhưng đối với một tập tin để có thể đọc được trên web, nó phải được đọc bởi người dùng đang chạy quá trình máy chủ.

chmod -R +rx css 
chmod -R +rx js 

Cho phép đọc và thực thi quyền. Các -R là đệ quy. Chỉ làm điều này cho các tập tin bạn muốn có thể đọc được trên thế giới!

+0

Đã 3 năm kể từ khi tôi giải quyết vấn đề này! Câu trả lời tốt mặc dù. – Adil

+0

Thay vào đó, nó không phải là 'chmod -R + rx css'? –

+0

@MichaelButler Cảm ơn. Nó không được chấp nhận trong Mac OS X. –

0

Hãy thử điều này phù hợp vị trí của bạn:

location ~* ^.+\.(js|css|png|jpg|jpeg|gif|ico|html)$ { 

hoặc

location ~* ^.+.(js|css|png|jpg|jpeg|gif|ico|html)$ { 
+0

Nó vẫn cho cùng một lỗi với cả hai tùy chọn Nhật ký lỗi – Adil

+0

nói 2010/10/14 19:56:15 [lỗi] 3284 # 0: * 1 mở() "/ home/adil/NetBeansProjects-cũ/CrowdSourcedWeb/ứng dụng /csw/web/styles/style.css "không thành công (13: Quyền bị từ chối), máy khách: 127.0.0.2, máy chủ: quickstart.local, yêu cầu:" GET /styles/style.css HTTP/1.1 ", host:" quickstart .local " – Adil

-3
server { 
     listen   80; 
     server_name  mysite.com; 

     access_log  /var/log/nginx/access.log; 
     error_log  /var/log/nginx/error.log warn; 

     index   index.php index.html; 
     root  /full/path/to/public_html; 

} <--- you forgot this one 

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


     location ~ index.php { 
       include  /etc/nginx/fastcgi_params; 
       keepalive_timeout 0; 
       fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
       fastcgi_pass 127.0.0.1:9000; 
     } 

    } 

bạn phải đóng máy chủ {} trước khi xác định vị trí.

hoặc thay đổi chủ sở hữu tệp thành www-data hoặc apache nếu bạn không có quyền truy cập vào tệp.

+1

Thẻ vị trí phải nằm trong thẻ máy chủ. – Adil

+0

lạ, trong trường hợp của tôi, nó hoạt động với máy chủ đóng {} trước khi xác định vị trí. Nhưng tôi rất vui vì bạn đã tìm ra giải pháp! – Maarten

+0

Maarten. Chỉ để giải thích nhận xét của tôi ở trên, lý do tôi nói đó là vì nginx phàn nàn. "Bất hợp pháp" của nó để giữ thẻ vị trí bên ngoài thẻ máy chủ. Có lẽ bạn nên nhìn vào conf của bạn một lần nữa, để xem chính xác lý do tại sao nó làm điều đó. Tốt để biết. Và, cảm ơn vì đã giúp đỡ. – Adil

-1

Đảm bảo rằng mọi thư mục cấp cao nhất đều có cấp quyền và index.html. Hầu hết các lần bạn sẽ chỉ sao chép tệp bạn muốn xem trong/www và đổi tên nó index.html đảm bảo index.html mới có quyền phù hợp (để chắc chắn 777 chỉ dành cho kiểm tra ofcourse).

+2

777 "chỉ để chắc chắn" là một ý tưởng khủng khiếp. "Tôi có chìa khóa, nhưng tôi nên để cửa trước mở khóa chỉ để đảm bảo tôi có thể quay lại." – Dan

1
giải pháp

Alt: thay đổi người dùng chạy bằng cách chỉnh sửa nginx.conf (ví dụ, /usr/local/nginx/conf/nginx.conf) cho chủ sở hữu của các tập tin:

user myuser mygroup; 
0

tôi cần phải viết giải pháp thay thế cho vấn đề này. Tôi di chuyển wordpress vào máy chủ plesk và tôi nhận được lỗi này với các script css và js. Cấu hình Nginx tạo ra lỗi khi nhận tệp js và css. Nếu lỗi wordpress tải các tập lệnh CSS và JS (bị cấm), có thể do cấu hình nginx và apache.

UNLOCK hộp của nginx cấu hình và apache:

thông minh xử lý các tập tin tĩnh -> DONT CHECKED

Điều này giải quyết vấn đề của tôi. Tôi hy vọng những người khác quá pymessoft.com

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