2012-04-10 68 views
16

Tôi muốn kiểm tra tên miền phụ nginx trước khi tải cấu hình lên máy chủ. Tôi có thể kiểm tra nó trên localhost không? Tôi thửCách kiểm tra tên miền phụ nginx trên localhost

server { 
    listen  80; 
    server_name localhost; 

    location/{ 
     proxy_pass http://localhost:8080; 
    } 
} 

server { 
    listen  80; 
    server_name sub.localhost; 

    location/{ 
     proxy_pass http://localhost:8080/sub; 
    } 
} 

Và nó không hoạt động. Shoulld i thay đổi tập tin host của tôi để làm cho nó hoạt động? Ngoài ra, sau khi tải trang web lên máy chủ, tôi có nên thay đổi bản ghi DNS và thêm sub.mydomain.com không?

Trả lời

15

Có, thêm 'sub.localhost 127.0.0.1' vào tệp lưu trữ của bạn. Phụ đó phải được giải quyết bằng cách nào đó. Cần làm việc.

Sau đó, khi bạn đã sẵn sàng truy cập mạng, có, thêm bản ghi a hoặc cname cho tên miền phụ phụ.

Khi tôi sử dụng proxy_pass Tôi cũng bao gồm proxy.conf từ nginx. http://wiki.nginx.org/HttpProxyModule

+0

Vâng, cảm ơn, nó hoạt động. – madhead

5

Đối với máy chủ web công cộng của bạn với tên miền riêng của mình, bạn chỉ cần thêm một tên Canonical sử dụng một bản ghi CNAME trong cấu hình DNS của bạn:

CNAME * example.com. 

Một khi điều này được thực hiện, thiết lập nginx bạn thiết lập

server_name *.example.com example.com; 

Trong thiết lập cục bộ, bạn có thể giữ cùng cấu hình cho nginx, trừ khi bạn thiết lập DNS cục bộ, bạn sẽ phải chỉnh sửa tệp/etc/hosts và thêm từng tên miền phụ theo cách thủ công. ký tự đại diện không hoạt động trong tệp/etc/hosts.

127.0.0.1 abc.example.com def.example.com ghi.example.com 

Thường được khuyến nghị sử dụng .local làm không gian tên cho miền địa phương của bạn.

1

Trong hệ điều hành dựa trên Linux chỉ để chỉnh sửa dưới dạng sudo/etc/hosts và thay đổi 127.0.0.1 localhost thành 127.0.0.1 *.localhost.

Vì vậy, tại /etc/nginx/sites-enabled/<environment>/<your_project_name> chỉnh sửa server_name phím làm <subdomain>.localhost.

Khởi động lại dịch vụ nginx.

$ sudo service nginx restart 

Và sau đó thử http://<subdomain>.localhost tại thanh url.

Nó phù hợp với tôi.

CẬP NHẬT

Theo tôi, một giải pháp tốt hơn là tạo ra một máy chủ ảo mà chỉ đáp ứng nếu subdomain không tồn tại, tại /etc/nginx/sites-enabled/development/default, như máy chủ mặc định (hãy nhớ rằng bạn có thể xác định chỉ có một máy chủ như mặc định).

server { 
    listen 80 default_server; 
    root /var/www/html/errors; 
    server_name *._; 

    location/{ 
    index 404.html; 
    } 

} 

Hãy chắc chắn rằng trong nginx.conf (thường ở /etc/nginx/nginx.conf) chứa include /etc/nginx/sites-enabled/**/*; làm việc máy chủ ảo này. Nếu không, hãy đặt nó và sau đó chạy $ sudo service nginx restart.

Trong trường hợp này không cần thiết, hãy đặt *.localhost trong /etc/hosts, nhưng chỉ localhost.

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