2012-06-12 24 views
5

Tôi cần cài đặt MediaWiki để yêu cầu sử dụng https (và từ chối http bình thường). Tôi đã dành 2 giờ tìm kiếm. Thiết lập $wgServer không hoạt động và đóng cổng 80 trong httpd.conf cũng không hoạt động.Cách đơn giản nhất để có được MediaWiki yêu cầu HTTPS trên tất cả các trang?

Cài đặt wiki của tôi được chạy trên máy chủ Apache.

+1

Telling Apache không lắng nghe trên cổng 80 sẽ làm việc, nếu bạn làm điều đó một cách chính xác. – jnylen

+0

Ngoài ra, bạn đang chạy hệ điều hành nào? – jnylen

Trả lời

5

Câu trả lời của tôi giả định rằng bạn đã có Apache lắng nghe lưu lượng truy cập https trên cổng 443. Nếu không phải như vậy, bạn cần phải thiết lập điều đó trước. Quy trình sẽ khác nhau tùy thuộc vào hệ điều hành bạn đang chạy.


Bạn muốn thực hiện việc này trong Apache. Trên hệ thống Ubuntu của tôi, có một tệp /etc/apache2/ports.conf có chứa dòng sau:

Listen 80 

Bạn sẽ có tệp cấu hình tương tự chứa dòng đó. Xóa nó và đừng quên khởi động lại Apache.


Một cách khác để thực hiện điều này, cho phép cấu hình Apache phức tạp hơn mà bạn cho phép truy cập HTTP đến một số phần của trang web, là sử dụng một .htaccess file trong thư mục MediaWiki của bạn. Hãy thử điều này:

RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} 
+0

Điều này có đảm bảo rằng wiki sẽ không đặt biểu mẫu đăng nhập/tìm kiếm để đăng lên http không? –

6

Tôi vừa mới làm điều này trên Ubuntu 14 (lần đầu tiên ngày hôm nay, do đó có thể là một cách tốt hơn!) Bằng cách thiết lập

$wgServer = "//myhostname.com/mediawiki"; 

Điều này làm cho tên máy chủ " giao thức tương đối "vì vậy nó hoạt động với HTTP hoặc HTTPS. Bạn có thể chỉ cần đặt nó vào https: // ... mặc dù.

Sau đó cấu hình apache2 để chuyển hướng tất cả lưu lượng HTTP HTTPS:

Chỉnh sửa cấu hình SSL mặc định (điều này giả định bạn chỉ sử dụng các trang web mặc định):

sudo vim /etc/apache2/sites-available/default-ssl.conf 

để đọc một cái gì đó như:

# Redirect HTTP to HTTPS 
<VirtualHost *:80> 
    ServerAdmin [email protected] 
    ServerName example.com 

    Redirect permanent/https://example.com/ 
</VirtualHost> 

# Normal HTTPS config for default site 
<VirtualHost *:443> 
    SSLEngine On 
    SSLCertificateFile /etc/apache2/ssl/apache.pem 
    SSLCertificateKeyFile /etc/apache2/ssl/apache.key 

    ServerAdmin [email protected] 
    ServerName example.com 
    DocumentRoot /var/www/html/ 
    ErrorLog ${APACHE_LOG_DIR}/error.log 
    CustomLog ${APACHE_LOG_DIR}/access.log combined 
</VirtualHost> 

Bật trang web SSL mặc định, nếu bạn chưa có (điều này tạo liên kết từ trang web được bật tới trang web khả dụng)

sudo a2ensite default-ssl 

này giả định rằng bạn đã thu được một giấy chứng nhận SSL (Tôi tạo ra một ký tự một) mà đã được đặt trong /etc/apache2/ssl/apache.pem/etc/apache2/ssl/apache.key như tham chiếu trong cấu hình ở trên.

Cuối cùng có được apache để sử dụng cấu hình mới:

sudo service apache2 restart 

(Hoặc reload có thể đủ)

+0

Câu trả lời này sẽ thay đổi như thế nào nếu *** chúng tôi muốn 'example.com' hướng đến' www.example.com'; * và * sau đó tạo mọi thứ HTTPS? (Tôi đã cố gắng thiết lập cấu hình tương tự từ các câu hỏi và câu trả lời tương tự. Tôi nghĩ nó là chính xác, nhưng các thông tin đăng nhập của MediaWiki bị hỏng (mọi thứ khác đều OK) Bây giờ tôi đang cố gắng "kích hoạt HTTPS cho Mediawiki theo mặc định"). – jww

+0

tôi tự hỏi tại sao cú pháp "giao thức-tương đối" này không phải là mặc định! cảm ơn vì đã cứu tôi hôm nay :) – lensovet

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