當我在網址列輸入IP時,會看到Apache的It's work!
而不是導向網站。
目前想要輸入IP時就可以直接導向網站:
另外網站上面已經有設定.htaccess將網站自動導向https了。
這部份需要去做甚麼?還是有甚麼東西我沒有做起來的?
抱歉,這裡再補上一些資訊。
環境是1台centos 6主機上有三個網站。
但三個網站對應外面的網站出口時,會各自分配對外的3組IP
一個網站都有一個獨自的對外IP,但都在同一台主機上。
現在想要解決的問題是:
想要輸入相對應的IP時,會自動轉址為相對應的網站;而不是apache的測試畫面。
例如輸入168.45.52.5時就會自動轉向到 www.kurulinbo.com.tw 這樣子
假設你的三個站台,IP 與 Domain name 分別是
1.1.1.1 www.a.com
2.2.2.2 www.b.com
3.3.3.3 www.c.com
那麼請在 /etc/httpd/conf.d 目錄下,新增一個你的站台設定檔,假設是 my.conf,內容如下:
Listen 443 https
<VirtualHost *:443>
ServerName www.a.com
DocumentRoot "請改為a站台真實目錄"
### a站台其它設定
</VirtualHost>
<VirtualHost *:443>
ServerName www.b.com
DocumentRoot "請改為b站台真實目錄"
### b站台其它設定
</VirtualHost>
<VirtualHost *:443>
ServerName www.c.com
DocumentRoot "請改為c站台真實目錄"
### c站台其它設定
</VirtualHost>
<VirtualHost *:80>
ServerName www.a.com
ServerAlias 1.1.1.1
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://www.a.com/$1 [R,L]
</VirtualHost>
<VirtualHost *:80>
ServerName www.b.com
ServerAlias 2.2.2.2
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://www.b.com/$1 [R,L]
</VirtualHost>
<VirtualHost *:80>
ServerName www.c.com
ServerAlias 3.3.3.3
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://www.c.com/$1 [R,L]
</VirtualHost>
然後重啟 apache (service httpd restart) 就可以了。
假如遇到因為已經存在 ssl.conf 而造成 config 錯誤,無法啟動,請修改如下:
Listen 443 https
<VirtualHost _default_:443>
SSLEngine on
</VirtualHost>
改為
#Listen 443 https
#<VirtualHost _default_:443>
#SSLEngine on
#</VirtualHost>
<VirtualHost *:443>
ServerName www.a.com
DocumentRoot "請改為a站台真實目錄"
SSLEngine on
### a站台其它設定
</VirtualHost>
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.kurulinbo.com\.tw$ [NC]
RewriteRule ^(.*)$ http://www.kurulinbo.com.tw/$1 [L,R=301]
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://www.kurulinbo.com.tw/$1 [R,L]
好像是這樣吧 .... 有一段時間沒設定了
實現不同網址一機多用的方法
修改Apache的 vi /usr/local/etc/apache22/httpd.conf
找到 #Include etc/apache22/extra/httpd-vhosts.conf這一行,把前面的 # 拿掉,存檔
修改vi /usr/local/etc/apache22/extra/httpd-vhosts.conf
以下範例設定檔,看一下應該就知道該怎樣修改了
NameVirtualHost *:80
<VirtualHost *:80>
ServerAdmin webmaster@abc.com.tw
DocumentRoot "/usr/local/www/abc.com.tw"
ServerName abc.com.tw
ServerAlias www.abc.com.tw
ErrorLog "/var/log/abc.com.tw-error_log"
CustomLog "/var/log/abc.com.tw-access_log" common
<VirtualHost *:80>
ServerAdmin webmaster@abc.com.cn
DocumentRoot "/usr/local/www/abc.com.cn"
ServerName abc.com.cn
ErrorLog "/var/log/abc.com.cn-error_log"
CustomLog "/var/log/abc.com.cn-access_log" common
以這個設定檔來說
abc.com.tw 對應到 /usr/local/www/abc.com.tw 這個目錄
abc.com.cn 對應到 /usr/local/www/abc.com.cn 這個目錄
請重新啟動 Apache 即可
/usr/local/etc/rc.d/apache22 stop
/usr/local/etc/rc.d/apache22 start
啟動 Apache出現
[warn] (2)No such file or directory: Failed to enable the 'httpready' Accept Filter
表示沒有載入 accf_http module, 這是用來 buffer incoming connections 用的
解決方法如下請直接執行
kldload accf_http // 載入此 module
修改 vi /boot/defaults/loader.conf 以及 vi /boot/loader.conf 加入 // 設定下次開機載入
accf_data_load="YES"
accf_http_load="YES"