iT邦幫忙

0

如何在CentOS7+Nginx環境上增加子網域,並指定其子網域對應的目錄呢?

各位先進好:
我目前遇到一個問題希望先進們能解惑,如下:

  1. 已建立Nginx
  2. 已安裝PHP並以跟Nginx結合可以運作
  3. 已安裝phpMyAdmin,並能正常運作
  4. 目前是單機網域

問題:

  1. 要怎麼設定Nginx讓公司各個網域納進來並錯開資料夾?
  2. 要如何設定子公司NameServer讓其去網址商做對應?
  3. 如何設定對應後的網址與資料夾是結合的?
  4. 要如何設應子網域以及子網域的對應資料夾?

以上
希望先進們能解惑
感謝!

chang0206 iT邦新手 1 級 ‧ 2016-09-21 11:59:07 檢舉
https://is.gd/ljss2D

孩子,GOOGLE很好用的...
outgi iT邦新手 5 級 ‧ 2016-09-21 21:34:14 檢舉
之前kimo也很好用阿!就是方法不同方式很多,DNS又需要時間解析才發問的阿

爺爺~
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

7
fillano
iT邦超人 1 級 ‧ 2016-09-20 08:57:41
最佳解答

先來看一個最簡單的http request,以這篇問答為例,ithelp網站host在AWS,對外的ELB ip是:54.65.53.255。所以我們可以簡單地用telnet來觀察http如何運作(不過如果是https可能就沒辦法這樣嘗試了XD),首先用telnet連上這個ip的80 port:

telnet 54.65.53.255 80

然後輸入以下兩行:

GET /questions/10184161 HTTP/1.1
Host: ithelp.ithome.com.tw

接著按下兩次Enter,一個最簡單的http request就完成了:

Feng-Hsu-Pingteki-MacBook-Pro:~ fillano$ telnet 54.65.53.255 80
Trying 54.65.53.255...
Connected to ec2-54-65-53-255.ap-northeast-1.compute.amazonaws.com.
Escape character is '^]'.
GET /questions/10184161 HTTP/1.1
Host: ithelp.ithome.com.tw

HTTP/1.1 200 OK
Cache-Control: no-cache
Content-Type: text/html; charset=UTF-8
Date: Tue, 20 Sep 2016 00:28:16 GMT
Server: nginx/1.4.6 (Ubuntu)
Set-Cookie: XSRF-TOKEN=eyJpdiI6ImZ6MFN5SGdDcElCaFNIamN6cXc4RkE9PSIsInZhbHVlIjoiTmtOTVNkMU8yS3RpV3RPQnZlNmxzbDdsQUVKblRTRkFxT0t2RkdkaGo1Q0pCUllBMlB1SG5vTkMxbWh0OENQUGdQdVY5QTE4NDFHS0tcL0hmQlhZM2FBPT0iLCJtYWMiOiI3NTU2Mjg5NjI4M2YyM2VjMWZiYjRkYzQzYjllOGNiMTI1NGZhMGRiOGQ1YWZjYTAzOWRmYTQ0OTVmNDgxMGUxIn0%3D; expires=Thu, 20-Oct-2016 00:28:16 GMT; Max-Age=2592000; path=/
Set-Cookie: ithelp2016_desktop=eyJpdiI6ImlrMWk1aUEyWHc4dmNmTVhYYlg2T2c9PSIsInZhbHVlIjoiekV4RUdFV1Nhb05EaGVwckxaK0lCKzRBZEg5MmttQmRTTUxqQWlkWkxkVm55SEJCRDluRExjcWdMcFV6NTdrWHUyMlpDNzRuTk5mTFVIWDZxbFwvWk5BPT0iLCJtYWMiOiJkYmFmNTc1YWUwZjVlNTI1YWYwNjVhYjdmODNhZDczM2ZjNDZjYmQ0ZDQ2ZGIzYjQxYjY3NzM2ZmZmN2VhNjQyIn0%3D; expires=Thu, 20-Oct-2016 00:28:16 GMT; Max-Age=2592000; path=/; httponly
transfer-encoding: chunked
Connection: keep-alive

7c98
<!DOCTYPE html>
<html lang="zh-TW">

<head>
    <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">

<title>如何在CentOS7+Nginx環境上增加子網域,並指定其子網域對應的目錄呢? - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天</title>
......(太長了,我只取前幾行)

不論是用什麼http伺服器,你用瀏覽器連上伺服器的過程大概都是:

  1. 在網址列輸入URL
  2. 瀏覽器向DNS查詢URL中hostname所對應的ip
  3. 類似上面telnet的例子,連上ip所指的伺服器的80埠
  4. 伺服器會使用Host: ithelp.ithome.com.tw這個標頭的資訊,找出virtual host設定的實體路徑
  5. 然後透過GET /questions/10184161 HTTP/1.1這一行的資訊,找出相對路徑所對應的資源
  6. 處理過後,回傳response給瀏覽器
  7. 瀏覽器將結果呈現出來

所以你要解決的問題就是兩個:

  1. 用戶的機器怎麼識別hostname
  2. nginx伺服器如何處理host標頭傳來的hostname訊息

第一個是跟兩件事情有關:

  1. 你使用的domain name是跟誰申請的?是否有提供domain name代管服務?你是否要使用registrar之外的服務商提供的代管服務(例如AWS的Route53)?或是你要自己架設DNS?
  2. 用戶的機器是跟誰查詢DNS?

第二個問題的話,設定好nginx的Server Block就可以運作,請用google查詢前面三個英文關鍵字。(也可以查詢nginx virtual host啦)

看更多先前的回應...收起先前的回應...
weiclin iT邦高手 4 級 ‧ 2016-09-20 13:01:27 檢舉

https 的話用 openssl 指令也可以這樣玩 xD

openssl s_client -connect your.site:443
fillano iT邦超人 1 級 ‧ 2016-09-20 13:53:53 檢舉

/images/emoticon/emoticon12.gif讚啦,我沒這樣玩過,來試試...

對耶~我也沒用過!好棒棒!我也要來試試~

outgi iT邦新手 5 級 ‧ 2016-10-02 01:55:55 檢舉

感謝!回答指導這麼多,雖然有些不太懂,但已解決問題,不懂的地方我會先去爬文了解,再次感謝

我要發表回答

立即登入回答