【IT修真院系列】nginx如何配置?
首頁 | IT修真院 task1中要求配置nginx,可以直接訪問,很多新人問這個問題,
我先放出利勇師兄以及我和19師弟總結的攻略供參考,如有其他問題或者攻略,歡迎大家補充
mac的nginx配置問題1 使用ruby安裝HomeBrew(mac系統已自帶ruby了)
ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
關於HomeBrew的詳細用法,請訪問其官網:Homebrew — OS X 不可或缺的套件管理器
這裡還有一個問題,brew的源基本都是國外的,很可能被牆,所以遇到無法下載安裝軟體時候,可以自己先下載對應版本號的軟體,然後放到/Library/Caches/Homebrew/路徑中,然後brew install 軟體名 安裝。
2
安裝nginxbrew install nginx
基本上上面一句話,就可以安裝好nginx了,這裡有個問題,就是如何指定nginx的版本,通常在更新homebrew軟體源後,它會給出軟體最高穩定的版本,今天是2016年1月7日,他給出的nginx版本是1.8穩定版,剛好是我需要的,如果需要指定版本,可以去其官網:Homebrew — OS X 不可或缺的套件管理器 找到配置方法。
查看下安裝好的nginx版本nginx -v
啟動nginx
sudo nginx
在瀏覽器上輸入:http://localhost:8080,出現下面這樣的頁面,證明nignx啟動了。
nginx常用操作
sudo nginx #啟動nginx
sudo nginx -s reload #修改配置後重新載入生效
#簡單解釋下,上面這種方法重啟,nginx在重啟的時候不會中斷服務,因為 nginx在啟動後,會有一個master進程和多個worker進程,重啟是會先生成新的worker進程去接受reload命令,等老的worker進程執行完畢,master進程在關閉他們,所以伺服器不會中斷。
sudo nginx -s reopen #重新打開日誌文件
sudo nginx -s stop #快速停止nginx
sudo nginx -s quit #完整有序的停止nginx
sudo nginx -t #測試當前配置文件是否正確
nginx的常見目錄
/usr/local/Cellar/ #nginx默認安裝的目錄,所有使用brew安裝的軟體默認都在這裡
/usr/local/Cellar/nginx/1.8.0/html #默認的訪問目錄,就是我們說的網站根目錄
/usr/local/etc/nginx/ # nginx.conf所在的目錄
3
修改默認路徑從nginx/html改成你自己放置代碼的路徑vim /usr/local/etc/nginx/nginx.conf
接下來的任務就很明確了,把listen 80下面的兩個 root html中的路徑,改成我們自己放代碼的文件夾,例如在E盤下面新建一個home的文件夾,再在目錄下新建一個www的文件夾,那麼路徑就是:E:homewww,把task1.html放進去,然後修改配置
修改完成後,點擊Esc鍵,shift+: 輸入:wq,保存修改。sudo nginx -s reload #修改配置後重新載入生效,每次修改必須重新載入才有效。在此感謝古塵師姐和葉子師兄的幫助,如有遺漏,還望指正。----------------------------------------利勇師兄的攻略--------------------------------------------------
第一步:咱們先不管這玩意是幹嘛的,先去官網把它下下來
官方網址:http://nginx.org/;
當你進官網後,第一反應絕逼是;擦,怎麼全是英文?瞬間慌慌的。。。
不要慌,看圖
點擊2014然後你會進入這樣一個頁面
這個時候 請勇敢的點擊最上面那個版本
即nginx-1.79;
然後出現
然後點擊下載Stable version也就是穩定版的第三個版本;
隨便存到你想存的任何一個文件解壓出來不用安裝就可以直接用了,文件夾名字命為nginx;
PS:也許你第一次下載會提示失敗,再下一次就好;
第二步:當咱們把nginx下下來了怎麼用呢?直接點擊nginx.exe程序,這是你會發現有個黑色彈出框一閃即逝;沒錯,這不是BUG;這說明它啟動了;
然後隨便打開一個瀏覽器;輸入localhost出現下圖;好恭喜你安裝成功了;
也許你會疑問為啥輸入localhost就彈出這個頁面來,首先咱們正式介紹下這個軟體是幹嘛的,當時樓主在網上百度了一大堆,看的稀里糊塗的;按照樓主理解是:這貨是用來將你的電腦轉化為一台虛擬WEB伺服器的;舉個栗子,打開一個瀏覽器輸入www.baidu.com百度的伺服器響應你這個請求讓瀏覽器展現百度的頁面,同理可得,這個時候你的localhost類似於www.baidu.com,
自己的電腦相當於百度的那個伺服器;這個時候你可能又會問了,咱裝著幹嘛用啊?作為一名程序猿,當你的產品開發好成功之後是不是就上線可以讓別人訪問了;當你成功之前那前一刻,你是不是得測試下你這個產品上線後能不能用啊;這個時候裝上nginx你就能用你的電腦作為模擬主機來看看產品的功能是不是都OK了;第二步:具體的測試方法
Nginx的配置文件是文件夾中的conf文件下的nginx.conf,其實配置文件默認不修
改也是可有用的;如果你通過瀏覽器輸入localhost出現的頁面即為文件夾下HTML文件中的index.html;所以你可以將你想要檢測的產品放到HTML文件夾中,並將原本的index.html文件給刪了,這個時候打開網頁輸入localhost,使用ctrl+F5清下瀏覽器緩存即出現你產品中的index.html(產品的首頁都會命名為index.html)頁面,然後進行一系列測試看看是否OK;
第三步:修改配置
上面說到配置可以不修改,但在實際的測試過程中,一般不大可能會將產品往nginx文件里的html文件夾中塞,這個時候咱們就得改下配置了;請打開nginx文件夾下的conf文件夾,裡面有個nginx.conf文件,用閱讀工具如記事本之類打開它;舉個栗子:
默認網站根目錄為/usr/local/nginx/html,要將它改成/home/www
vi /usr/local/nginx/conf/nginx.conf
將其中的
location / {
root html;
index index.php index.html index.htm;
}
改為
location / {
root /home/www;
index index.php index.html index.htm;
}
然後再將
location ~ .php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
改為
location ~ .php$ {
root /home/www;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
然後重啟nginx
-----------------------------古塵和19的補充攻略------------------------------------------------------
2016.02.06
首先 大家應該在論壇或者官網,下載過@利勇 師兄的 《Nginx使用方法》,基本上都能做到輸入localhost出現welcome界面這一步,如果沒有出現的話,很可能是你的軟體目錄下有中文,建議大家養成一個好習慣,所有的軟體安裝目錄都用英文,哪怕是拼音也行,因為畢竟從系統到軟體,大多是國外的,中文路徑容易出問題。
其實我們看到的welcome界面,就是nginx/html目錄下的index.html頁面,重點是接下來的步驟,很多人不理解。「默認網站根目錄為/usr/local/nginx/html,要將它改成/home/www」,這句話的意思就是,把默認路徑從nginx/html改成你自己放置代碼的路徑,這裡的home/www只是@利勇 師兄舉的一個mac路徑的栗子,windows系統路徑是E:homewww這種格式
我們先來看下原配置文件
#為注釋部分,忽略不計
server {
listen 80;
server_name localhost;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
「下面我們仔細來分析一下:
listen:表示當前的代理伺服器監聽的埠,默認的是監聽80埠。注意,如果我們配置了多個server,這個listen要配置不一樣,不然就不能確定轉到哪裡去了。 server_name:表示監聽到之後需要轉到哪裡去,這時我們直接轉到本地,這時是直接到nginx文件夾內。 location:表示匹配的路徑,這時配置了/表示所有請求都被匹配到這裡 root:裡面配置了root,表示當匹配這個請求的路徑時,將會在這個文件夾內尋找相應的文件,這裡對我們之後的靜態文件伺服很有用。index:當沒有指定主頁時,默認會選擇這個指定的文件,它可以有多個,並按順序來載入,如果第一個不存在,則找第二個,依此類推。
下面的error_page是代表錯誤的頁面,這裡我們暫時不用,先不管它 」
(上面這段分析文字,引用自 tomcat結合nginx使用小結)
接下來的任務就很明確了,把listen 80下面的個 root html中的路徑,改成我們自己放代碼的文件夾,例如在E盤下面新建一個home的文件夾,再在目錄下新建一個www的文件夾,那麼路徑就是:E:homewww,把task1.html放進去,然後修改配置
server {
listen 80;
server_name localhost;
location / {
root E:homewww;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
只改上面那處紅字(知乎不能改變文字顏色?那就加粗好了)的地方就可以了,然後Windows系統用任務管理器 (ctrl+alt+delete)關閉nginx進程,可能有好幾個,全都關掉,然後重新打開nginx,瀏覽器輸入http://localhost/task1.html,就可以正常訪問了,如果還是訪問不了的話,在localhost上加上埠:80試試~
(其實我理解的是,只要路徑正確就行,但是我換了其他的文件夾名字,例如E:wy ask,E: ask等,都失敗了,提示404錯誤,不知道是不是我訪問的姿勢不對,我試了一個多小時都不行...ORZ)
另外,@19 師弟:手機訪問我研究出來了,不需要電腦共享文件
首先,電腦和手機連接上同一個wifi
然後查看電腦ip:win+R→cmd→ipconfig→回車, 找到無限區域網適配器wlan中的ip地址,例如我的是192.168.0.119
然後手機瀏覽器中輸入192.168.01.119/task1.html 就可以看到自己的代碼啦~
PS:手機訪問還有另外兩個方法
1、代碼上傳至伺服器,直接用ip訪問
2、谷歌瀏覽器的F12調試中,左上角有個手機的圖標,點那個就可以模擬移動設備訪問,有很多不同尺寸的手機,蘋果、三星、洛基亞之類的,木有小米 0.0
感想:
1、感謝@19 師弟的耐心指導,沒想到12點了還在,下次有人問你這個問題,把這篇日報給他看就行啦~
2、我在夜貓子的路上一去不復返了..orz
--------------------------------------------------2016.03.05 更新--------------------------------------------------
在群里看到老大幫師弟解答問題,順便也解了我先前的疑惑
為什麼用E:wy ask,E: ask等路徑都顯示錯誤,都是轉義字元的鍋
詳情可參見: 轉義字元_百度百科
先前我路徑中的 被自動轉換成製表符了,所以讀取不了目錄,換成mytask就行了
另外,也明白了看錯誤日誌的重要性
nginx路徑下的logserror.log就是錯誤日誌,複製裡面的內容去百度就行
其他很多軟體應該也是類似原理
再次感謝老大~
PS:
1、先前我口中的@19 師弟,原來是首席大師兄,失敬,失敬
2、@蘇哈哈 師兄補充的一條:#號是注釋符號
--------------------------------------------------2017.8.13 更新--------------------------------------------------
上面的教程是去年剛開始學IT的時候寫的,雖然很小白,但是確實很多新人在這裡卡住了,所以分享到知乎上來,大神可以直接跳過~
另外補充幾點:
- 80埠有時候會被其他程序佔用,可自行改成其他的
- server name 默認是localhost,可修改成其他的,但是要配置相應的hosts,如想修改為task,則hosts中需增加一條 127.0.0.1 task
- 建議直接在index主頁加上所有任務的跳轉鏈接,這樣就可以直接用localhost:80訪問主頁,然後跳轉到其他任務了,不用自己在url後面加小尾巴
- nginx的作用遠不止如此,項目中更常用的是解決跨域問題,如JS後面幾個angular任務中,給出的後端介面 ip為http://175.25.23.192:10498,獲取banner列表介面為get方法,url為/a/article/search,我們可以在nginx中加上這樣配置
server {
listen 80;
server_name localhost;
location / {
root E:wystudentcarrots-admin-html\trunk;
index index.html index.htm;
}
location /a/{
proxy_pass http://175.25.23.192:10498;
}
}
這樣一來,localhost:80/a/article/search也就等效於http://175.25.23.192:10498/a/article/search
可以改成其他攔截名,如
location /b/{
proxy_pass http://175.25.23.192:10498/;
}
需要注意的是,由於這裡的b並不在介面url中,所以proxy_pass中配置的ip後面要加上/,可以簡單理解為,實際發送請求的時候,b會被編譯掉,localhost:80/b/a/article/search等效於http://175.25.23.192:10498/a/article/search
正好回答一下Linux下的安裝吧~
###1、Linux下Nginx的安裝這裡的安裝方法主要體現兩種:1.直接使用yum命令進行安裝,如:
```#yum install nginx```這樣做的好處是方便快捷。2.從Nginx的官方網站上面下載穩定版本,再使用tar等命令進行解壓,安裝。採取第二種方法可以自由控制Nginx版本,安裝路徑等。
在默認情況下,經過編譯安裝的Nginx包含了大部分可用模塊,你也可以通過「./configure --help」選項設置各個模塊的使用情況。
安裝完成後執行以下操作驗證安裝是否成功:
``` # cd /usr/local/nginx/sbin # ./nginx -t ```結果顯示:```nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is oknginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful```至此,nginx的安裝已成功完成。###2、Nginx的配置 ######2.1配置文件Nginx的主要配置文件是nginx.conf,位於安裝目錄下的nginx/conf文件夾里,這裡有關Nginx配置問題,我們就主要對文件nginx.conf進行修改就可以了。######2.2 詳細配置
```#定義Nginx運行的用戶和用戶組user nobody nobody;#默認請求的設置 location / { root /root; #定義伺服器的默認網站根目錄位置 index index.php index.html index.htm; #定義首頁索引文件的名稱}#web伺服器設置server { listen 80; #監聽80埠 server_name www.xx.com; #定義使用http://www.xx.com訪問 access_log logs/www.xx.com.access.log main; #設定本虛擬主機的訪問日誌 } ```存檔返回,到此有關於Nginx簡單的伺服器配置算是成功完成了。啟動nginx之後,瀏覽器中輸入http://localhost可以驗證是否安裝啟動成功。
(注意事項:啟動Nginx伺服器的時候,應該關閉其他,如Apache等伺服器,以及兩層防火牆,關閉防火牆命令如下:
``` #/etc/init.d/iptables stop #/usr/sbin/setenforce 0```)###3、Nginx常用命令 ######3.1啟動Nginx```# ./sbin/nginx# service nginx start```######3.2停止 Nginx```# ./sbin/nginx -s stop/quit# service nginx stop```######3.3其他nginx命令參數詳解查看Nginx進程:
`#ps -ef|grep nginx`查看Nginx的版本信息:
`#nginx –v/-V`Nginx 重載配置:``` #./sbin/nginx -s reload # service nginx reload```新人第一次回答問題好緊張T T不知道有沒有什麼不對的地方《Nginx 高性能WEB伺服器詳解》
小白就想問問直接輸IP(這個IP的電腦是win7)就能看到很多存儲的文件是怎麼弄的=。=
推薦閱讀: