Khai báo nhiều cổng cho cùng một Virtualhost


35

Khai báo nhiều cổng cho cùng một Virtualhost:

SSLStrictSNIVHostCheck off
# Apache setup which will listen for and accept SSL connections on port 443.
Listen 443
# Listen for virtual host requests on all IP addresses
NameVirtualHost *:443

<VirtualHost *:443>
  ServerName domain.localhost
  DocumentRoot "/Users/<my_user_name>/Sites/domain/public"
  <Directory "/Users/<my_user_name>/Sites/domain/public">
    Order allow,deny
    Allow from all
  </Directory>

  # SSL Configuration
  SSLEngine on
  ...
</VirtualHost>

Làm cách nào tôi có thể khai báo một cổng mới ('lắng nghe', Tên máy chủ, ...) cho 'domain.localhost'?

Nếu tôi thêm đoạn mã sau, apache cũng hoạt động (quá nhiều) cho tất cả các tên miền phụ khác của 'domain.localhost' (subomain1.domain.localhost, subomain2.domain.localhost, ...):

<VirtualHost *:80>
  ServerName pjtmain.localhost:80
  DocumentRoot "/Users/Toto85/Sites/pjtmain/public"
  RackEnv development
  <Directory "/Users/Toto85/Sites/pjtmain/public">
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

3
Chỉ cần lưu ý. Bạn không thể tham gia máy chủ ảo https và không https thành một. <Virtualhost *: 80 *: 443>. 80 Không thể có "SSLEngine trên". Bạn phải có 2 khai báo Virtualhost riêng biệt cho SSL và không SSL.
Gacek

Câu trả lời:


63

Câu hỏi hơi mơ hồ, nhưng tôi sẽ cố gắng giúp.

Nếu bạn muốn cùng một Virtualhost nghe trên nhiều cổng, thì bạn làm điều này:

Listen 80
NameVirtualHost *:80

Listen 8080    
NameVirtualHost *:8080

<VirtualHost *:80 *:8080>
  ServerName some.domain.name
  ServerAlias some.other.domain.name
  ....
</VirtualHost>

Nói chung, bạn không định nghĩa nhiều Virtualhost dựa trên tên của cùng một tên miền, trừ khi bạn cần sử dụng một giao thức khác.

Đối với các máy chủ ảo dựa trên tên SSL, bạn phải hết sức cẩn thận: theo định nghĩa, không thể có nhiều chứng chỉ trên cùng một IP: Cổng, do đó, để tránh các lỗi chứng chỉ, nó phải là chứng chỉ wilcard, bao gồm tất cả các tên miền được cung cấp.


2
+1 nhưng một số chỉnh sửa nhỏ: Chứng chỉ SSL không được gắn với địa chỉ IP mà là tên chung (CN) phải bằng tên máy chủ . Ngoài ra với tiện ích mở rộng SNI, có thể có nhiều máy chủ ảo với các chứng chỉ khác nhau trên cùng một địa chỉ IP. ( en.wikipedia.org/wiki/Server_Name_Inication )
Daniel Rikowski

3
+1 cũng vậy, đối với SSL, nó phải là <Virtualhost *: 80 *: 443>
fedmich
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.