iT邦幫忙

0

輸入IP自動進入對應的網站

當我在網址列輸入IP時,會看到Apache的It's work!
而不是導向網站。
目前想要輸入IP時就可以直接導向網站:

另外網站上面已經有設定.htaccess將網站自動導向https了。
這部份需要去做甚麼?還是有甚麼東西我沒有做起來的?


抱歉,這裡再補上一些資訊。
環境是1台centos 6主機上有三個網站。
但三個網站對應外面的網站出口時,會各自分配對外的3組IP
一個網站都有一個獨自的對外IP,但都在同一台主機上。

現在想要解決的問題是:
想要輸入相對應的IP時,會自動轉址為相對應的網站;而不是apache的測試畫面。
例如輸入168.45.52.5時就會自動轉向到 www.kurulinbo.com.tw 這樣子

看更多先前的討論...收起先前的討論...
神威 iT邦研究生 4 級 ‧ 2018-09-05 15:50:22 檢舉
不是通常ip後面加:port嗎
像我們公司的內部網站就是
192.168.10.xx:8080/myweb
如果只輸入192.168.10.xx他就會出現it work而不是頁面
ks1217 iT邦研究生 1 級 ‧ 2018-09-05 16:42:42 檢舉
同一台主機上有三片網卡嗎? 可以綁三個Public IP ?
snameless iT邦新手 4 級 ‧ 2018-09-05 16:53:34 檢舉
只有一張對外的網卡而已。
weiclin iT邦高手 4 級 ‧ 2018-09-05 19:02:54 檢舉
https://httpd.apache.org/docs/2.4/vhosts/ip-based.html
echochio iT邦高手 1 級 ‧ 2018-09-06 07:33:57 檢舉
Apache rewrite.....
weiclin iT邦高手 4 級 ‧ 2018-09-06 11:46:13 檢舉
大家是不是都忘了有個古老的 ip based virtual host ...
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
wiseguy
iT邦超人 1 級 ‧ 2018-09-06 10:34:36
最佳解答

假設你的三個站台,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 錯誤,無法啟動,請修改如下:

  1. 註解掉 ssl.conf 這四行
Listen 443 https
<VirtualHost _default_:443>
SSLEngine on
</VirtualHost>

改為

#Listen 443 https
#<VirtualHost _default_:443>
#SSLEngine on
#</VirtualHost>
  1. 修改 my.conf,在前三個 443 VirtualHost 裡,多加一行 SSLEngine on,例如:
<VirtualHost *:443>
	ServerName www.a.com
	DocumentRoot "請改為a站台真實目錄"
	SSLEngine on
	### a站台其它設定
</VirtualHost>
0
echochio
iT邦高手 1 級 ‧ 2018-09-06 07:47:30
  1. apache config ... AllowOverride all 不打開的話 .htaccess 沒辦法運作
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.kurulinbo.com\.tw$ [NC]
RewriteRule ^(.*)$ http://www.kurulinbo.com.tw/$1 [L,R=301]
  1. apache config 開 RewriteEngine On 也可 .....要加入 ... (我用網站正常有 https ...)
RewriteEngine On
RewriteCond %{HTTPS} off 
RewriteRule (.*) https://www.kurulinbo.com.tw/$1 [R,L]

好像是這樣吧 .... 有一段時間沒設定了

0
jay0123
iT邦高手 1 級 ‧ 2018-09-06 09:35:22

實現不同網址一機多用的方法

修改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"

我要發表回答

立即登入回答