建站知識:域名/ 空間/ IP/ 端口之間的關係

 

        先說域名解析吧,好比說你的域名是 www.sunnymould.com,這個域名對應着一個IP地址,域名解析就是把上面的域名轉換成這個IP地址的過程,這樣你就能夠域名訪問了上面地址上的內容了。html

端口映射就是說,當你訪問 www.sunnymould.com的時候,其實就是訪問了一個IP地址的某個端口,而這個IP地址後面也許存在着一個局域網,這樣咱們就要指定網絡訪問這個IP的端口時候,指向哪一個服務器(就是說WEB服務器是內網的哪一個IP地址),好比內網WEB服務器地址爲192.168.37.4,這樣咱們就須要在路由器中把 80端口指向這個內網IP。文件傳播的過程我不懂怎麼說,通常來講文件傳播使用的是FTP協議,TCP協議也有。詳細狀況你就要看看具體的書。前端

內網IP端口映射到外網IP的端口

端口映射又叫作端口轉發、虛擬服務器,不一樣的寬帶路由器的命名有所不一樣。內網的一臺電腦要上因特網對外開放nginx

服務或接收數據,都須要端口映射。web

端口映射

端口映射分爲動態和靜態。     瀏覽器

動態端口映射:內網中的一臺電腦要訪問網站,會向NAT網關發送數據包,包頭中包括對方網站IP、端口和本機IP、服務器

端口,NAT網關會把本機IP、端口替換成本身的公網IP、一個未使用的端口,而且會記下這個映射關係,爲之後轉發網絡

數據包使用。而後再把數據發給網站,網站收到數據後作出反應,發送數據到NAT網關的那個未使用的端口,dom

而後NAT網關將數據轉發給內網中的那臺電腦,實現內網和公網的通信.當鏈接關閉時,NAT網關會釋放分配給這條jsp

鏈接的端口,以便之後的鏈接能夠繼續使用。動態端口映射其實也就是NAT網關的工做方式。tcp

靜態端口映射:就是在NAT網關上開放一個固定的端口,而後設定此端口收到的數據要轉發給內網哪一個IP和端口,

無論有沒有鏈接,這個映射關係都會一直存在。就可讓公網主動訪問內網的一臺電腦。
比喻:端口映射過程就如同:你家在一個小區裏B棟2410室,你朋友來找你,找到小區門口,不知道你住哪層哪號?

就問守門的保安,保安很客氣的告訴了他你家詳細門牌,因此你朋友很輕鬆的找到了你家。這個過程就是外網訪問內

網經過端口映射的形象比喻。

 

將域名解釋到服務器地址的非80端口

訪問網址的時候端口號是必然存在的,可是域名只能解析到IP,而解析不到端口,而且默認的Http端口是80。

這個不是由於域名解析的問題。能夠經過web服務器設置解決問題。若是80端口已被佔用,那就沒有辦法。除非你使用隱藏的域名轉發(Url轉發),可是實際還要加仍是訪問到了IP:port。

    不隱藏路徑域名轉發:訪問域名,自動跳轉到指定的網絡路徑後,瀏覽器的地址欄裏顯示的地址自動變爲顯示真正的目標地址。
    隱藏路徑的域名轉發: 訪問域名,自動跳轉到指定的網絡路徑後,瀏覽器的地址欄裏顯示的地址顯示的地址保持不變,但實際訪問到的是跳轉後的內容。

配置nginx,網站只有在域名或IP後添加端口才能順利訪問

nginx配置:

server {
        listen       8083 ;
        server_name  域名;

        location / {

            index  index.html index.htm index.jsp;
            #proxy_redirect off;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
            proxy_pass http://127.0.0.1:8081/;
        }                       
}

直接經過域名沒法訪問,加個8081端口以後就能順利訪問了,直接IP+端口的方式也能夠。

nginx配置成監聽8083端口了,所以只能使用指定端口才能訪問,可是修改listen 8083這句改爲listen 80,後直接使用域名又能訪問到了網站。

直接訪問IP或域名,ngnix設置監聽到8083端口後,全部來自80端口的請求都會轉發的8083端口。由於在nginx以外還有個防火牆,將全部經過80端口的請求都轉到8083端口。
防火牆添加-A INPUT -p tcp -m tcp --dport 8083 -j ACCEPT以後,能夠經過一直訪問網站。

 

域名的二級域名映射到內網IP提供Web服務

問題描述:

公司有一網站www.abc.com,前兩天申請了一個二級域名,www.oa.abc.com.而且作了相應的解析。在網站首頁有一個OA登陸入口,此入口與二級域名www.oa.abc.com綁定。咱們公司有一個單獨的OA服務器,服務器是內網IP地址。如今的問題是:怎麼才能經過網站首頁的OA登陸入口進入到OA辦公系統??服務器內網IP:192.168.1.6端口8181。

解決方案:

①: 

把內部OA  ip和端口映射到公網IP和端口,
www.oa.abc.com 解析到OA公網的IP:8181地址便可。

 

內網的IP地址和互聯網的域名綁定

按照以下步驟輕鬆解決綁定問題~~~
1.登錄你的路由器,就是帶你局域網內主機上網的設備。查看他所擁有的IP地址。
2.在你申請域名的網站上填寫相關參數,使其域名和IP(公網)對應。
3.在路由器上DDNS上將域名和你路由器的外網IP綁定。作完這三個步驟,外網就能夠經過該域名訪問到你的路由設備了。可是仍不是你的服務器。那麼繼續
4.在路由器上虛擬服務器或者端口映射(一個功能的不一樣叫法)中,將你服務所須要開放的端口映射出去,同時映射80端口(不然在訪問時須要在域名後加端口號如:http://woaijigeci.com.cn:1653,若是把80也映射出去,直接輸入域名就行了,對於一些用戶你跟他說端口他也不懂)。添加相應規則。
5.完成以上步驟,就能夠實現你說的功能了。

外網到內網端口映射

問題描述:公司用得是2003server的操做系統,可是用的是局域網IP,我想在路由器上作個端口映射,也就是我把公司的電腦給開着,從別的地方能夠遠程鏈接到公司的這臺電腦上。

解決方案:遠程那臺主機最快捷簡單的方式就是開啓路由器的DMZ模式。
 在路由器中找到DMZ選項,指定DMZ的地址爲你要連接的主機局域網IP地址就能夠。

若是路由器不支持dmz主機,就要使用NAT了,中文名彷佛叫作網絡地址轉換,這個路由確定是支持的。使用NAT來實現端口映射,設置公網的IP端口轉接到你遠程內網IP端口便可。

二級域名映射到內網服務器IP端口

問題描述:

如今公司內網服務器已經映射到公網IP,並對公網IP作了域名解析,可是在內網輸入域名直接打開防火牆登錄。
內網一臺服務器的IP已經映射到公網IP了,80端口到80端口,如今公網IP也作了二級域名解析,想讓不論在外網仍是在內網的電腦都能經過用二級域名訪問服務器應該怎麼弄啊?
滿意回答
內部須要作DNS,若是使用域控的話,只須要在DNS中添加個域名解析就能夠,若是沒有就須要新建DNS服務了,比較麻煩,也能夠直接在防火牆中作一個容許這個域名的全部鏈接策略便可。

怎麼在一個ip上綁定多個域名

Windows Server 服務器

Windows 2000 Server安裝成功後,通常會啓動一個默認的Web站點,爲整個網絡提供Internet服務。在中小型局域網中,服務器每每只有一臺,可是一個Web站點顯然又沒法知足工做須要。那麼,可否在一臺服務器上設置多個Web站點(如下咱們簡稱爲「一機多站」)呢?答案是確定的,並有多種途徑能夠達到這一目的。咱們知道,網絡上的每個Web站點都有一個唯一的身份標識,從而使客戶機可以準確地訪問。這一標識由三部分組成,即TCP端口號、IP地址和主機頭名,要實現「一機多站」就須要在這三個方面下工夫。
如今咱們有一臺Windows 2000 Server服務器,在這臺服務器上要創建默認站點「教師之家」和新增站點「學生天地」(創建更多網站原理相同),下面咱們分別探討三種不一樣的實現途徑。
途徑一 TCP端口法
咱們知道Web站點的默認端口通常爲80,若是改變這一端口,就能實如今同一服務器上新增站點的目的。
假設服務器名爲Master,安裝有一塊網卡,IP地址爲192.168.0.1,那麼安裝IIS後會自動生成一個默認Web站點,咱們就將其做爲「教師之家」網站。點擊「開始」→「程序」→「管理工具」→「Internet服務管理器」,出現「Internet信息服務」窗口(請見附圖)。右鍵單擊「默認Web站點」,選擇「屬性」進行設置。在「Web站點標識」中,將說明改成「教師之家」,IP地址選擇192.168.0.1,TCP端口保持默認的80不變。將製做好的網站文件拷貝到默認目錄中,「教師之家」的設置就算完成了。

下面咱們來增長「學生天地」站點。在「Internet信息服務」窗口中單擊選定主機名Master,而後選擇「操做」→「新建」→「Web站點」,出現「Web站點建立嚮導」窗口,依次點擊[下一步],將站點說明定爲「學生天地」,IP地址選擇192.168.0.1,在TCP端口欄必定要將默認的80修改成其餘值,如1050,選定主目錄,設置好訪問權限,「學生天地」站點的設置也完成了。
測試一下效果,在瀏覽器地址欄中輸入http://192.168.0.1(默認的端口號80能夠省略),回車,咱們將訪問到「教師之家」站點。輸入http://192.168.0.1:1050(注意IP地址後的端口號必定不能少),則會出現「學生天地」站點。遺憾的是,採用這種方式設置的多站點沒法與DNS結合使用。
途徑二 IP地址法
通常狀況下,一塊網卡只設置了一個IP地址。若是咱們爲這塊網卡綁定多個IP地址,每一個IP地址對應一個Web站點,那麼一樣能夠實現「一機多站」的目的。
點擊「開始」→「設置」→「控制面板」,雙擊「網絡和撥號鏈接」,右鍵單擊「本地鏈接」,選擇「屬性」調出「本地鏈接屬性」面板,選擇「Internet協議(TCP/IP)」,點擊「屬性」調出「Internet協議(TCP/IP)屬性」面板,點擊下方的「高級」調出「高級TCP/IP設置」面板。在IP地址欄下面列出了網卡已設定的IP地址和子網掩碼,點擊[添加]按鈕,在彈出的對話框中填上新的IP地址(如192.168.0.2,注意不能與其餘機器的IP地址重複),子網掩碼與原有的相同(如255.255.255.0)。而後依次[肯定],就完成了多個IP地址的綁定。
按照上例中的作法設置默認站點「教師之家」,而後咱們來增長「學生天地」站點。在「Internet信息服務」窗口中單擊選定主機名Master,選擇「操做→「新建」→「Web站點」,出現「Web站點建立嚮導」窗口,依次點擊[下一步],將站點說明定爲「學生天地」,IP地址選擇192.168.0.2(注意不能與默認站點的IP地址相同),TCP端口保持默認的80不變,選定主目錄,設置好訪問權限,「學生天地」站點的設置完成。
分別在瀏覽器地址欄中輸入http://192.168.0.1和http://192.168.0.2,測試一下效果。若是您嫌經過輸入IP地址訪問站點不夠方便的話,徹底能夠經過設置DNS,用http://www.teacher.com代替http://192.168.0.1來訪問「教師之家」,用http://www.student.com代替http://192.168.0.2來訪問「學生天地」。
途徑三 主機頭法
在不更改TCP端口和IP地址的狀況下,一樣能夠實現「一機多站」,這裏咱們須要使用「主機頭名」來區分不一樣的站點。
所謂「主機頭名」,實際上就是指www.student.com之類的友好網址,所以要使用「主機頭法」實現「一機多站」,就必須先進行DNS設置。在DNS中設置http://www.teacher.com和http://www.student.com兩個網址,將它們都指向唯一的IP地址192.168.0.1。
按照以上兩例中的作法首先設置默認站點「教師之家」,因爲是默認站點,所以基本無需進行特別設置。而後參考以上兩例進行添加「學生天地」站點的操做,IP地址選擇192.168.0.1,TCP端口保持默認的80不變,「此站點的主機頭」一項必定要填上www.student.com,而後選定主目錄,設置好訪問權限,「學生天地」站點的設置完成。
分別在瀏覽器地址欄中輸入http://www.teacher.com和http://www.student.com兩個網址,測試效果。與上兩例不一樣的是,用「主機頭法」實現的「一機多站」必須使用友好網址才能訪問。以上三種方式,您能夠根據具體狀況選擇使用。若是服務器安裝有兩塊以上的網卡,一樣能夠採用「IP地址法」爲每塊網卡指定不一樣的IP地址,從而實現「一機多站」。 

Apache服務器同一IP綁定多個域名

ServerName server.domain.com
DocumentRoot /www/mainserver
# 這是另一個IP地址

NameVirtualHost 172.20.30.50
DocumentRoot /www/example1
ServerName www.example.com
# 你能夠在這裏添加其餘指令 ...

DocumentRoot /www/example2
ServerName www.example.org
# 你能夠在這裏添加其餘指令 ...
任何不是針對172.20.30.50的請求都將由主服務器來伺服。而提交給172.20.30.50卻沒有主機名或沒有」Host:」頭的請求,都將由ww.example.com伺服。
在不一樣的IP的地址(好比一個內部和一個外部地址)上提供相同的內容
服務器有兩個IP地址(192.168.1.1和172.20.30.40)。這個機器位於內部(局域網)網絡和外部(廣域網)之間。在外部,域名server.example.com指向外部地址(172.20.30.40),而在內部則指向內部地址(192.168.1.1)。
服務器能夠爲來自內部和外部的請求提供一樣的內容,您只須要一個配置段就能夠了。
服務器配置
NameVirtualHost 192.168.1.1
NameVirtualHost 172.20.30.40
DocumentRoot /www/server1
ServerName server.example.com
ServerAlias server
如今,從不一樣的網絡提交的請求都會由同一個段來伺服。
注意
在內網中,您可使用server這個名字來代替server.example.com這個全名。
跟上面同樣,在上述的例子裏,您能夠用」*」來代替具體的IP地址,這樣就能夠對全部的地址都返回相同的內容了。
在不一樣的端口上運行不一樣的站點
若是您想讓同一個IP的不一樣端口伺服多個域名。您能夠藉助在NameVirtualHost指令中定義端口的方法來達到這個目的。若是您想使用不帶」name:port」的或是直接用Listen指令,您的配置將沒法生效。
服務器配置
Listen 80
Listen 8080
NameVirtualHost 172.20.30.40:80
NameVirtualHost 172.20.30.40:8080

ServerName www.example.com
DocumentRoot /www/domain-80

ServerName www.example.com
DocumentRoot /www/domain-8080

ServerName www.example.org
DocumentRoot /www/otherdomain-80

ServerName www.example.org
DocumentRoot /www/otherdomain-8080
創建基於IP的虛擬主機
一個有兩個IP地址(172.20.30.40和172.20.30.50)分別對應域名www.example.com和www.example.org的配置以下:
服務器配置
Listen 80
DocumentRoot /www/example1
ServerName www.example.com

DocumentRoot /www/example2
ServerName www.example.org
若是存在主服務器,那麼對沒有出如今任一個段中的請求(好比,對localhost的請求)都會由主服務器來伺服。
混用基於端口和基於IP的虛擬主機
若是您的服務器有兩個IP地址(172.20.30.40和172.20.30.50)分別對應域名www.example.com和www.example.org 。對每一個域名,您都但願在80端口和8080端口發佈您的網站。您能夠這樣配置:
服務器配置
Listen 172.20.30.40:80
Listen 172.20.30.40:8080
Listen 172.20.30.50:80
Listen 172.20.30.50:8080


DocumentRoot /www/example1-80
ServerName www.example.com

DocumentRoot /www/example1-8080
ServerName www.example.com

DocumentRoot /www/example2-80
ServerName www.example.org

DocumentRoot /www/example2-8080
ServerName www.example.org
混用基於域名和基於IP的虛擬主機
您想在一些地址上配置基於域名的虛擬主機而在另一些地址上配置基於IP的虛擬主機。
服務器配置
Listen 80
NameVirtualHost 172.20.30.40
DocumentRoot /www/example1
ServerName www.example.com

DocumentRoot /www/example2
ServerName www.example.org

DocumentRoot /www/example3
ServerName www.example3.net
# IP-based
DocumentRoot /www/example4
ServerName www.example4.edu

DocumentRoot /www/example5
ServerName www.example5.gov
將和mod_proxy模塊一塊兒使用
下面的例子容許一個前端機器代理一個運行在其餘機器上的虛擬主機。在以下示例中,在192.168.111.2機器上配置了一個同名的虛擬主機。這樣,萬一在同一臺機器上代理了多個主機名,ProxyPreserveHostOn 指令能確保指定的主機名順利經過代理。
ProxyPreserveHost On
ProxyPass / http://192.168.111.2
ProxyPassReverse / http://192.168.111.2/
ServerName hostname.example.com
使用」_default_」虛擬主機
爲全部端口配置」_default_」虛擬主機
這樣配置能夠捕獲全部指向沒指定的IP地址和端口的請求。好比:一個沒被任何虛擬主機使用的地址/端口對。
服務器配置
DocumentRoot /www/default
這樣一個使用通配符端口的默認虛擬主機能夠有效的防止請求被主服務器接收。
若是一個地址/端口對已經被一個基於域名的虛擬主機使用,那麼」_default_」虛擬主機決不會處理髮向這個地址/端口對的請求。若是一個」Host:」請求頭中包含未知信息,或者乾脆就沒有,那麼它會被第一個基於域名的虛擬主機(也就是在配置文件中最早出現的使用了那個地址/端口對的虛擬主機)處理。
您能夠用AliasMatch或RewriteRule來重寫任何請求,使它指向一個簡單信息頁面(或腳本)。
爲不一樣的端口配置」_default_」虛擬主機
與第一種同樣,但咱們想讓服務器偵聽不少端口而第二個」_default_」虛擬主機單獨偵聽80端口。
服務器配置
DocumentRoot /www/default80
# ...
DocumentRoot /www/default
# ...
偵聽80端口的」_default_」虛擬主機(必須出如今全部使用通配符端口的虛擬主機以前)會捕獲全部發向一個未指定的IP地址的請求。主服務器將不會用於伺服任何請求。
爲單獨一個端口配置」_default_」虛擬主機
若是咱們只想在80端口上創建惟一的一個」_default_」虛擬主機,咱們應該這樣配置:
服務器配置
DocumentRoot /www/default
...
發向一個未指定地址的80端口的請求將會由這個虛擬主機伺服;而發向未設定地址的其餘端口的請求則由主服務器伺服。
將一個基於域名的虛擬主機移植爲一個基於IP的虛擬主機
若是一個具備ww.example.org域名的虛擬主機(就是基於域名配置示例中的第二個)獲得了本身的IP地址。爲了不一些域名服務器或代理服務器在移植期間仍對這個域名作老的解析,咱們能夠採用一種過渡方法:同時提供新舊兩個IP地址的解析。
達到這個目的很簡單。由於咱們只要簡單的把新地址(172.20.30.50)加入VirtualHost指令就好了。
服務器配置
Listen 80
ServerName www.example.com
DocumentRoot /www/example1
NameVirtualHost 172.20.30.40

DocumentRoot /www/example2
ServerName www.example.org
# ...

DocumentRoot /www/example3
ServerName www.example.net
ServerAlias *.example.net
# ...
如今這個虛擬主機就能夠用新地址(表現爲一個基於IP的虛擬主機)和舊地址(表現爲一個基於域名的虛擬主機)同時進行訪問了。
使用ServerPath指令
若是咱們在同一個服務器上運行了兩個基於域名的虛擬主機。爲了匹配正確的虛擬主機,客戶端必須發送正確的」Host:」 頭。而舊的使用HTTP/1.0的客戶端沒法發送這樣的頭,這樣Apache就沒法辨別客戶端想要鏈接哪一個虛擬主機(會用主虛擬主機來伺服這個請求)。爲 了儘可能提供向下兼容性,咱們能夠提供一個主虛擬主機來返回一個頁面,在頁面中加入指向基於域名的虛擬主機的URL前綴的連接。 服務器配置 NameVirtualHost 172.20.30.40 # 主虛擬主機 DocumentRoot /www/subdomain RewriteEngine On RewriteRule ^/.* /www/subdomain/index.html # ... DocumentRoot /www/subdomain/sub1 ServerName www.sub1.domain.tld ServerPath /sub1/ RewriteEngine On RewriteRule ^(/sub1/.*) /www/subdomain$1 # ... DocumentRoot /www/subdomain/sub2 ServerName www.sub2.domain.tld ServerPath /sub2/ RewriteEngine On RewriteRule ^(/sub2/.*) /www/subdomain$1 # ... 因爲ServerPath指令的做用,發送到htp://www.sub1.domain.tld/sub1/的請求總會被sub1-vhost所伺服。 若是客戶端發送了正確的」Host:」頭,發送到htp://www.sub1.domain.tld、的請求只會被sub1-vhost所伺服。若是沒有發送」Host:」頭,客戶端將會獲得從主虛擬主機發送的信息頁面。 請注意,這裏還有一點小問題:若是客戶端沒有發送」Host:」頭,發送到http://www.sub2.domain.tld/sub1/的請求仍是會被sub1-vhost所伺服。

相關文章
相關標籤/搜索