摘要:是一款具有高負(fù)載能力的服務(wù)器,也是架構(gòu)的主要角色之一。多站點(diǎn)設(shè)置前面我們修改配置文件的代碼位置,都是在下的里。如果想項(xiàng)目和項(xiàng)目均適用端口,則需要利用做反向代理設(shè)置。
基本配置nginx 是一款具有高負(fù)載能力的 web 服務(wù)器,也是 LNMP 架構(gòu)的主要角色之一。現(xiàn)在越來(lái)越多的開(kāi)發(fā)者選擇 nginx 作為 php 的好搭檔,替代 apache 的位置。下面我以 Mac 系統(tǒng)為例,介紹下 nginx 的配置
打開(kāi) nginx.conf,找到 http 下的 server,前幾行的內(nèi)容分別是:
listen 8080; #監(jiān)聽(tīng)端口 server_name localhost; #本地域名 root /usr/local/var/www; #項(xiàng)目根目錄
nginx 默認(rèn)監(jiān)聽(tīng)8080端口,你可以改成 80 端口。默認(rèn)項(xiàng)目根目錄也可以更改。不過(guò)更改之后要重新載入配置文件才能生效:
sudo nginx -s reload
注意:如果你不喜歡localhost,你想要一個(gè)個(gè)性的本地域名,比如www.test.com,首先要編輯 hosts 文件:
sudo vim /etc/hosts
添加一條:
127.0.0.1 www.test.com
然后修改 nginx.conf:
server_name www.test.com
總之 nginx.conf 中設(shè)置的域名,必須在 hosts 文件中存在!
在我們開(kāi)發(fā)項(xiàng)目的時(shí)候,一般會(huì)有隱藏入口文件的需求。依然是在 http 下的 server,我們找到location /,在大括號(hào)內(nèi)做修改。切記ci框架和tp框架的寫(xiě)法稍有不同,具體如下:
location / { index index.php index.html index.htm; if (!-e $request_filename) { rewrite ^/(.*)$ /index.php?$1 last; #ci框架寫(xiě)法 #rewrite ^/(.*)$ /index.php?s=/$1 last; #tp框架寫(xiě)法 break; } }
如果你用的是tp5,?入口文件在 public 目錄下,但是你不想在URL中寫(xiě)localhost/public/訪問(wèn)入口文件,你想直接通過(guò)localhost/訪問(wèn),你可以這樣寫(xiě):
rewrite ^/(.*)$ /public/index.php?s=/$1 last;
其實(shí)隱藏入口文件就是 nginx 做了下路由,看懂它的正則,其實(shí)不難理解。
如果要 nginx 正常解析 php,首先要在安裝好 php 之后,啟動(dòng) php-fpm。啟動(dòng)方法:
sudo php-fpm -D
上一步完成之后,接下來(lái)還是要修改 nginx.conf。server 下找到location ~ .php$這一行,包括它后面{}中的內(nèi)容,去掉注釋?zhuān)簿褪侨サ羟懊娴?b>#號(hào),修改成這樣:
location ~ .php(/.*)*$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_split_path_info ^((?U).+.php)(/?.+)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; include fastcgi_params; }
如圖:
重新載入配置文件。此時(shí) nginx 就可以配合 php-fpm 正確解析 PHP 了。
前面我們修改配置文件的代碼位置,都是在 http 下的 server 里。其實(shí)一個(gè) server 就相當(dāng)于一個(gè)站點(diǎn)。nginx.conf 下 http 模塊默認(rèn)開(kāi)啟一個(gè) server,就是只有一個(gè)站點(diǎn)。如果我們要多站點(diǎn),就需要添加多個(gè) server。
現(xiàn)在我們要添加一個(gè)站點(diǎn),假設(shè)這個(gè)站點(diǎn)的域名是 www.test2.com, 但是 server 不寫(xiě)在 nginx.conf 里。nginx 為我們提供了存放多站點(diǎn)配置文件的目錄,我們切換到這個(gè)目錄:
cd /usr/local/etc/nginx/servers/
然后新建配置文件:
vim www.test2.com.conf
里邊寫(xiě)一個(gè) server:
server { listen 80; server_name www.test2.com; index index.html index.php; root /usr/local/var/test2; location / { index index.php index.html; rewrite ^/(.*)$ /public/index.php?s=/$1 last; break; } location ~ .php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_split_path_info ^((?U).+.php)(/?.+)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; include fastcgi_params; } }
保存退出,重新載入配置文件。最后在 hosts 中添加:
127.0.0.1 www.test2.com
此時(shí),www.test2.com 就可以訪問(wèn)到你的新項(xiàng)目目錄 /usr/local/var/test2下了!
我的應(yīng)用場(chǎng)景是這樣的。假設(shè)我的服務(wù)器上存放著一個(gè) node 項(xiàng)目,node 占用著80端口,可以正常運(yùn)行。但是我想再放一個(gè) php 項(xiàng)目,此時(shí)這個(gè)php項(xiàng)目就不能是80端口了。如果想 node 項(xiàng)目和 php 項(xiàng)目均適用80端口,則需要利用 nginx 做反向代理設(shè)置。
解決方案是,node 項(xiàng)目設(shè)置成非 80 端口,比如3000,nginx 添加一個(gè)站點(diǎn),假設(shè)是www.test3.com,訪問(wèn) 80 端口,代理到 3000 端口即可。
設(shè)置方法如上一節(jié)添加新站點(diǎn):
cd /usr/local/etc/nginx/servers/
然后新建配置文件:
vim www.test3.com.conf
寫(xiě)入一個(gè) server:
server { listen 80; server_name www.test3.com; location / { proxy_pass http://127.0.0.1:3000; } }
訪問(wèn) www.test3.com,就可以訪問(wèn)到 node 項(xiàng)目了!
本文由 楊成功 原創(chuàng),更多原創(chuàng)內(nèi)容請(qǐng)到專(zhuān)欄 楊成功的全棧之路
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/39525.html
摘要:是一款具有高負(fù)載能力的服務(wù)器,也是架構(gòu)的主要角色之一。多站點(diǎn)設(shè)置前面我們修改配置文件的代碼位置,都是在下的里。如果想項(xiàng)目和項(xiàng)目均適用端口,則需要利用做反向代理設(shè)置。 nginx 是一款具有高負(fù)載能力的 web 服務(wù)器,也是 LNMP 架構(gòu)的主要角色之一?,F(xiàn)在越來(lái)越多的開(kāi)發(fā)者選擇 nginx 作為 php 的好搭檔,替代 apache 的位置。下面我以 Mac 系統(tǒng)為例,介紹下 ngin...
摘要:歡迎大家收看聊一聊系列,這一套系列文章,可以幫助前端工程師們了解前端的方方面面不僅僅是代碼什么是功能統(tǒng)計(jì)作為一名開(kāi)發(fā),我們的產(chǎn)品發(fā)布出去之后,無(wú)論是產(chǎn)品還是運(yùn)營(yíng),其實(shí)都是想及時(shí)了解產(chǎn)品對(duì)用戶(hù)產(chǎn)生的影響的。下一章,我們將繼續(xù)聊聊速度統(tǒng)計(jì)。 歡迎大家收看聊一聊系列,這一套系列文章,可以幫助前端工程師們了解前端的方方面面(不僅僅是代碼):https://segmentfault.com/bl...
摘要:歡迎大家收看聊一聊系列,這一套系列文章,可以幫助前端工程師們了解前端的方方面面不僅僅是代碼什么是功能統(tǒng)計(jì)作為一名開(kāi)發(fā),我們的產(chǎn)品發(fā)布出去之后,無(wú)論是產(chǎn)品還是運(yùn)營(yíng),其實(shí)都是想及時(shí)了解產(chǎn)品對(duì)用戶(hù)產(chǎn)生的影響的。下一章,我們將繼續(xù)聊聊速度統(tǒng)計(jì)。 歡迎大家收看聊一聊系列,這一套系列文章,可以幫助前端工程師們了解前端的方方面面(不僅僅是代碼):https://segmentfault.com/bl...
閱讀 2482·2021-10-12 10:11
閱讀 1233·2021-10-11 10:58
閱讀 3275·2019-08-30 15:54
閱讀 713·2019-08-30 13:59
閱讀 681·2019-08-29 13:07
閱讀 1409·2019-08-26 11:55
閱讀 2144·2019-08-26 10:44
閱讀 2644·2019-08-23 18:25