某日,領(lǐng)導(dǎo)把我叫去談話,說(shuō)是要幫助我快速成長(zhǎng)。給我出了這樣一個(gè)問(wèn)題:
使用nginx搭建web服務(wù)器,可以在網(wǎng)頁(yè)上列出指定目錄下的文件,可以點(diǎn)擊下載文件。
說(shuō)實(shí)話不是通信專(zhuān)業(yè)科班出身,之前從未接觸過(guò),有點(diǎn)懵逼。于是我開(kāi)始著手準(zhǔn)備,好在現(xiàn)在網(wǎng)絡(luò)太強(qiáng)大,一晚上對(duì)這方面的知識(shí)有所了解并完成了考察。
問(wèn)題一:服務(wù)器的軟件有哪幾種
答:服務(wù)器軟件有 Apache 服務(wù)器、Nginx 服務(wù)器和 WindowsServer 服務(wù)器。
問(wèn)題二、如何理解靜態(tài)網(wǎng)頁(yè)和動(dòng)態(tài)網(wǎng)頁(yè)
答:不需要和后臺(tái)進(jìn)行交互的網(wǎng)頁(yè)一般可稱(chēng)為靜態(tài)網(wǎng)頁(yè),比如只能瀏覽和下載的頁(yè)面;
需要和后臺(tái)進(jìn)行交互的網(wǎng)頁(yè)成為動(dòng)態(tài)服務(wù)器,比如提交表單。
這里我們需要搭建一個(gè)基于 Nginx 的靜態(tài)服務(wù)器。分步驟操作:
一、安裝 Nginx
這里我使用的是homebrew 進(jìn)行安裝。
安裝完成以后:
步驟一、首先更新 homebrew
brew update
如果上面操作長(zhǎng)時(shí)間沒(méi)任何動(dòng)靜,請(qǐng)更換鏡像,參考清華的鏡像 https://mirrors.tuna.tsinghua...
如果你在這一步遇到了這個(gè)錯(cuò)誤:
Another active Homebrew update process is already in progress. Please wait for it to finish or terminate it to continue.
解決辦法:
rm -rf /usr/local/var/homebrew/locks
如果你對(duì) rm -rf不熟悉,建議你直接到 locks 目錄下手動(dòng)刪除。你放釀成大錯(cuò)。
更新 homebrew 這一步不可省略,即使你跳過(guò)了這一步,直接使用 homebrew 安裝軟件,那么安裝之前還是會(huì)先更新,如下圖:

步驟二、查看 nginx 信息
brew info nginx
如果你還沒(méi)安裝 nginx,使用該命令會(huì)提示你 Not install。如果已經(jīng)安裝會(huì)顯示 nginx 一些信息,如下圖:

步驟三、安裝 nginx
brew install nginx
請(qǐng)注意,這個(gè)地方特別牛逼,不需要你手動(dòng)安裝 nginx 的各個(gè)依賴(lài)庫(kù)了,這里全部安裝好,依賴(lài)庫(kù)主要由:openssl、pcre。我已經(jīng)安裝了 nginx,這里重復(fù)安裝會(huì)有提示,如下圖:

如果你是第一次安裝,安裝好之后會(huì)告訴你 nginx 配置文件路徑,安裝好之后我們也可以通過(guò)查看 nginx 信息獲取 nginx 路徑信息(如圖步驟二),配置文件路徑:/usr/local/etc/nginx/nginx.conf
可以直接通過(guò)文本編輯器工具打開(kāi)編輯該文件,也可以通過(guò) Vim 打開(kāi)編輯。這里我打開(kāi)的時(shí)候選擇打開(kāi)方式為“文本編輯”,如圖:

步驟四、啟動(dòng) nginx
nginx
在命令行輸入這個(gè)命令后什么現(xiàn)象也沒(méi)有,在瀏覽器輸入 localhost:8080
那么你就會(huì)看到如下頁(yè)面:

恭喜你,看到這個(gè)網(wǎng)頁(yè)說(shuō)明你的 nginx 安裝成功。其實(shí)這個(gè)頁(yè)面是一個(gè)靜態(tài)文件,路徑是:/usr/local/var/www/index.html
在路徑/usr/local/var/www下還有一個(gè)文件是:/usr/local/var/www/50x.html如果安裝不成功就會(huì)顯示這個(gè)文件里的內(nèi)容。
其實(shí)還有一個(gè)路徑下也有這兩個(gè)文件,內(nèi)容相同,隨便修改那一個(gè)路徑下的文件內(nèi)容,另一個(gè)路徑下的文件也會(huì)一起跟著變化:/usr/local/Cellar/nginx/1.15.8/html不知道這兩個(gè)路徑分別有什么不同。
這里的端口8080是可以修改的,只要和你本地的端口不沖突就可以,比如可以修改為8181或者9999。我們還可以使用命令行查看當(dāng)前哪些端口被占用了,而我們又很想使用該端口,那么就把占用端口的進(jìn)程結(jié)束掉,使得這個(gè)端口空閑下來(lái)。
二、搭建靜態(tài)服務(wù)器
搭建這個(gè)服務(wù)器的目的是能夠和在同一局域網(wǎng)下的同學(xué)們分享文件,當(dāng)然了我是搭建在我自己的電腦上的,我如果不共享我的電腦,那就只能我自己分享文件給其他同學(xué),只需要給他們一個(gè)鏈接,就可以隨意下載了。
比如我把需要分享給其他同學(xué)的文件全都放在一個(gè)目錄下。
我在桌面上創(chuàng)建了一個(gè)文件夾,命名為 NginxTest。那么這個(gè)文件在我電腦(當(dāng)前主機(jī))的路徑就是:/Users/guxuecheng/Desktop/NginxTest
我們?cè)诎惭b完畢 Nginx 以后,在瀏覽器輸入 localhost:8080網(wǎng)頁(yè)上網(wǎng)頁(yè)上顯示了 Welcome to nginx!為什么是顯示這個(gè)內(nèi)容呢?因?yàn)榈刂?localhost:8080就是指向這個(gè)文件的?,F(xiàn)在我們希望這個(gè)地址指向我們指定的文件 NginxTest,那么就需要在配置文件里修改中這個(gè)指向?,F(xiàn)在我們?cè)賮?lái)分析一下配置文件:

- listen:nginx 使用的端口號(hào),可以修改。
- Server_name: 默認(rèn)是 localhost,那么就只能本地自己訪問(wèn),其他人無(wú)法訪問(wèn)?,F(xiàn)在把他修改為本地主機(jī)的 IP 地址,那么任何人有了這個(gè) IP 都可以訪問(wèn)。
- root:默認(rèn)是 html,所以才能顯示/usr/local/Cellar/nginx/1.15.8/html路徑下的兩個(gè)文件內(nèi)容?,F(xiàn)在我們需要顯示指定文件的內(nèi)容,那么久填寫(xiě)指定文件的路徑。
- autoindex on:這個(gè)參數(shù)是自己添加的,意思就是允許 nginx 訪問(wèn)文件夾目錄。如果沒(méi)有這個(gè)值,會(huì)報(bào)403。
- autoindex_exact_size off:顯示文件大小。
- autoindex_localtime on:顯示文件創(chuàng)建時(shí)間。
- charset utf-8,gbk:解決中文亂碼問(wèn)題。
配置文件修改結(jié)束記得保存,然后需要重啟 nginx
nginx -s reload
然后在瀏覽器輸入Server_name 的值,也就是你自己填寫(xiě)的 IP 地址,加上端口號(hào),比如:192.168.13.78:8080就可以訪問(wèn)并下載 NginxTest 目錄下的 文件了,可以把這個(gè)鏈接發(fā)送給你的同學(xué),他們也就可以訪問(wèn)了,自己訪問(wèn)還是只需要 localhost:8080就可以:
