Nginx nhiều rễ


13

Tôi muốn chuyển hướng yêu cầu đến một thư mục con cụ thể, đến một vị trí gốc khác. Làm sao? Khối hiện tại của tôi là:

server {
    listen       80;
    server_name  www.domain.com;

    location / {
        root   /home/me/Documents/site1;
        index  index.html;
    }

    location /petproject {
        root   /home/me/pet-Project/website;
        index  index.html;
        rewrite ^/petproject(.*)$ /$1;
    }

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    } }

Đó là, http://www.domain.com nên phục vụ /home/me/Document/site1/index.html trong khi http://www.domain.com/petproject nên phục vụ / home / me / pet-Project / website /index.html - có vẻ như nginx chạy lại tất cả các quy tắc sau khi thay thế và http://www.domain.com/petproject chỉ phục vụ /home/me/Document/site1/index.html.

Câu trả lời:


27

Cấu hình có vấn đề thông thường thường xảy ra với nginx. Đó là, sử dụng rootchỉ thị bên trong locationkhối.

Hãy thử sử dụng cấu hình này thay vì các locationkhối hiện tại của bạn :

root /home/me/Documents/site1;
index index.html;

location /petproject {
    alias /home/me/pet-Project/website;
}

Điều này có nghĩa là thư mục mặc định cho trang web của bạn /home/me/Documents/site1và đối với /petprojectURI, nội dung được cung cấp từ /home/me/pet-Project/websitethư mục.


4

Bạn cần breakcờ được thêm vào quy tắc viết lại, để quá trình xử lý dừng lại và vì đây là bên trong một khối xử lý vị trí sẽ tiếp tục bên trong khối đó:

rewrite ^/petproject/?(.*)$ /$1 break;

Lưu ý tôi cũng đã thêm vào /?mẫu phù hợp để bạn không kết thúc bằng dấu gạch chéo ở đầu url.


Việc viết lại hoàn toàn không cần thiết ở đây khi aliaschỉ thị được sử dụng như nó nên được sử dụng ở đây.
Tero Kilkanen
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.