【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

安裝nginx

brew 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的時候寫的,雖然很小白,但是確實很多新人在這裡卡住了,所以分享到知乎上來,大神可以直接跳過~

另外補充幾點:

  1. 80埠有時候會被其他程序佔用,可自行改成其他的
  2. server name 默認是localhost,可修改成其他的,但是要配置相應的hosts,如想修改為task,則hosts中需增加一條 127.0.0.1 task
  3. 建議直接在index主頁加上所有任務的跳轉鏈接,這樣就可以直接用localhost:80訪問主頁,然後跳轉到其他任務了,不用自己在url後面加小尾巴
  4. 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 ok

nginx: 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)就能看到很多存儲的文件是怎麼弄的=。=


推薦閱讀:

TAG:互聯網 | 前端開發 | 編程 | Nginx | IT行業 |