Linux 學習筆記 6 搭建nginx 實現二級域名訪問
前言
在前一節的內容裡面,我們學習瞭如何使用yum 包管理工具來安裝我們需要的軟體,這節內容,通過搭建Nginx 反向代理伺服器,以及學習服務的配置等內容。
NGINX
Nginx是一款輕量級的Web 伺服器/反向代理伺服器及電子郵件(IMAP/POP3)代理伺服器,在BSD-like 協議下發行。其特點是佔有記憶體少,併發能力強,事實上nginx的併發能力在同類型的網頁伺服器中表現較好。
後端用的最多的地方就是:反向代理,那何謂反向代理,何謂正向代理呢?
反向代理
反向代理代理的是伺服器
就好比當前這幅圖的情況下,使用者的瀏覽器訪問域名為http://abc.com 其實這個域名下存在兩個子域名的服務,blog.abc.com可以用來做部落格服務,而file.abc.com 可以用來做測試檔案服務,用於儲存上傳的檔案,這裡我們單單用了一個Nginx 即可實現一個域名下多個二級域名的訪問形式。
正向代理
正向代理代理的是使用者端
簡單的瞭解一下正向代理,其實在對外的過程中,我們需要用一個正向代理的伺服器來隱藏訪問者本身,這就代理了使用者的客戶端,對於最終的伺服器而言,它只知道一個總的伺服器來訪問它,不知道這個伺服器下面的客戶端,和我們搭梯子掛VP* 其實是一個道理。
安裝Nginx 伺服器
在當前源下面,Nginx 的安裝包只有一個,這不滿足我們的需求,我們需要去官網找尋對應的RPM 包,手動加入其依賴項。
NGinx package
找到其對應的Centos 版本,我們選擇Centos 後選擇7版本,因為我們安裝的就是Centos7,而後就會遇到選擇如下的內容,就會比較懵逼,這咋選?
RPM 內容介紹
上面學習的內容涉及到RPM包管理的內容。這裡做一個簡單的瞭解和學習。比如Windows 大家都知道Windows的安裝包都是EXE 結尾的可執行檔案。那linux 也有自己的安裝包軟體。這裡首先從Linux的包管理型別入手:
原始碼包
原始碼包,字面意思就是開發人員寫完的程式碼包,不能直接執行,因為電腦是不認識程式語言的,需要將程式語言編譯成電腦認識的二進位制才可以執行。所以原始碼包需要編譯後才可進行安裝使用。新手不建議使用這個。
二進位制包
二進位制包就是原始碼包進行編譯後的內容。可以拿過來直接使用。我們需要的就是這個包,二進位制包大多使用tar.gz 格式進行解壓後可以直接使用。
RPM包統一命名格式
當我們檢視一款RPM 包的時候,免不了感覺一大堆的東西,很不易瞭解。我就拿一個例子來說明:
在阿里雲等倉庫搜尋這個包的時候,在名稱上出現很多的字元
- 這裡的包名稱:pcp-pmda-nginx
- 3.10.9 軟體包版本號
- el6 發行版本號,就意思是編譯(釋出)了6個版本
- i686 以上平臺架構
這裡引用參考:http://c.biancheng.net/view/2868.html
至於自己的電腦版本如何檢視,請用
uname -a
學習到了以上知識,我知道其實我們已經可以選擇自己需要的包了。
RPM包安裝升級
一般我們通過下載後得到RPM的安裝包,就可以進行安裝了。一般在Linux 裡面不需要指定軟體的安裝路徑,其都是統一規劃好的,我們只需要知道我們的配置檔案在哪兒以及軟體的執行目錄,搭配whereis xxx 命令進行查詢,就可以了。
- /usr/bin 命令目錄
- /usr/lib/ 相關庫的位置
- /etc/ 配置檔案放置
- /usr/share/man/ 幫助檔案位置
RPM包安裝
對於RPM包的安裝,一定要是包全名,就是必須是有名稱、版本號、發行版、等等
rpm -ivh nginx16-nginx-1.6.2-3.el6.x86_64.rpm
- 選項i (install)安裝
- v 詳細顯示資訊
- h 列印內容
RPM包升級(常用)
rpm -Uvh nginx16-nginx-1.6.2-3.el6.x86_64.rpm
- U U選項表示沒有安裝過這個包則直接安裝,安裝過則直接升級至最新版本。
開始安裝RPM包
首選從官網複製連結後下載,或者下載後上傳到伺服器,都是一樣的,按照個人習慣。
curl -O http://nginx.org/packages/centos/7/x86_64/RPMS/nginx-1.10.0-1.el7.ngx.x86_64.rpm
rpm -Uvh nginx-1.10.0-1.el7.ngx.x86_64.rpm
# 啟動nginx
systemctl start nginx.service
# 開機啟動
systemctl enable nginx.service
# 檢視埠執行情況
netstat -nltp
若這裡沒有netstat命令,請搜尋安裝 yum install net-tools.x86_64
外部訪問嘗試
這時候我們的Linux 是部署在虛擬機器上的,通過橋接的方式訪問。關閉防火牆,不然訪問不到。
# 關閉防火牆服務
systemctl stop firewalld.service
# 永久停止防火牆
systemctl disable firewalld.service
配置Nginx
配置NGinx 可真的是一門功課。此時我們的伺服器已經可以正常啟動了。我們需要配置才可以玩起來。首先就學習配置一個二級域名來使用。這裡我們用的是本機虛擬機器進行訪問的,我們修改host檔案的方式讓我們的虛擬機器擁有一個域名。假設這個域名就是http://abc.com
192.168.0.120 abc.com
新建配置檔案
nginx 的配置檔案我們可以通過service 檢視到其位置。因為這個是預設的配置檔案,我們一般不做修改,而是再/conf.d/下新建一個.conf字尾的檔案在進行修改並配置我們的邏輯。
# 複製一個預設的配置檔案進行修改
cp /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/mynginx.conf
# 修改配置檔案
vi /etc/nginx/conf.d/mynginx.conf
server {
listen 80;
server_name blog.abc.com;
location / {
proxy_pass http://127.0.0.1:8080;
}
### 省略其他
}
server_name 修改為我們的二級域名xxx.abc.com;
proxy_pass 的地址就是我們要反向代理的地址。
測試效果
這裡因為轉發了一個8090的埠,我們可以將上一個節內容的tomcat 進行修改埠後啟動起來充當這個伺服器。
# 檢查配置檔案
nginx -t
# 過載配置資訊
nginx -s reload
啟動tomcat
# 進入tomcat 目錄
cd /root/apache-tomcat-8.5.50/bin/
# 啟動tomcat
./startup.sh
小結
學到這裡呢,我們已經學會了在nginx上如何使用tomct 的啟動,以及學會使用RPM 安裝包進行軟體的安裝,以及學會簡單的二級域名的配置。還是學到了很多實用的東西,非常nice
下節預告
下一節將學習service命令以及systemctl與之的配合如何實現服務的啟動。以及服務配置開機啟動等。
參考
- 虛擬機器關閉防火牆:https://www.cnblogs.com/aprilwang/p/10954928.html
- RPM 安裝命令 http://c.biancheng.net/view/2872.html
- aliyun 倉庫 https://developer.aliyun.com/packageSearch?word=nginx