可經過 Homebrew 可直接安裝:html
$brew install nginx
安裝好後,默認首頁的文件在 /usr/local/var/www
文件夾下 linux
默認的配置文件地址在 /usr/local/etc/nginx/nginx.conf
nginx
nginx 默認用的 8080 端口,若是發現端口被佔用了(經過 $lsof -i:8080
查看端口占用狀況),能夠殺掉使用該端口的進程($kill 進程PID
)。或者修改 nginx 的默認端口(/usr/local/etc/nginx/nginx.conf
)git
$brew services start nginx
或者進入到目錄 /usr/local/bin
下$./nginx
github
啓動成功後,瀏覽器訪問http://localhost:8080/
,就能夠看到 nginx 服務器返回的靜態資源了(默認是資源/usr/local/var/www/index.html)瀏覽器
$nginx -s stop
$nginx -s reload
$brew info nginx
更多配置可查看bash
https://www.nginx.com/resourc...服務器
nginx 中可經過 root 和 alias 指定資源的訪問路徑。
1)root:
location / { root /usr/local/var/www/; index index.html index.htm; }
上面這個規則:請求 http://localhost:8080/index.html
這個地址時,訪問的資源是: /usr/local/var/www/index.html.
請求 http://localhost:8080/test/a.png
這個地址時,訪問的資源是: /usr/local/var/www/test/a.png.
也就是說,訪問的資源地址實際上是 root 指定的路徑 + location 匹配到的路徑。
2)alias:
alias 即別名,與 root 的匹配規則稍有不一樣。
location /a/ { alias /usr/local/var/www/b/; }
上面這個規則:請求 http://localhost:8080/a/
這個地址時,訪問的資源是: /usr/local/var/www/b/index.html.
請求 http://localhost:8080/a/1.gif
這個地址時,訪問的資源是: /usr/local/var/www/b/1.gif.
也就是說,訪問的資源地址就是 alias 指定的路徑,與 location 匹配到的路徑無關(會把 location 匹配到的路徑丟掉)。
3)root 與 alias 的區別:
location /test/ { try_files $uri $uri/ /a/1.png; }
try_files 去嘗試到網站目錄讀取用戶訪問的文件,若是第一個變量存在,就直接返回;不存在則繼續讀取第二個變量,若是存在,直接返回;不存在則跳轉到第三個參數上。
$uri 是 nginx 的一個變量,存放着用戶訪問的地址。好比訪問http://www.xxx.com/index.html,\$uri就是 /index.html.
$uri/ 表明訪問的是一個目錄,好比:http://www.xxx.com/hello/test/ ,那麼\$uri/ 就是 /hello/test/.
例如上面這條規則:請求 http://localhost:8080/test/2.png
這個地址時,try_files 會判斷他是文件,仍是一個目錄,結果發現他是文件,與第一個參數 $uri 變量匹配。而後去到網站目錄下去查找 test/2.png 文件是否存在,若是存在直接讀取返回。若是不存在則跳轉到第三個參數,即返回網站根目錄 + /a/1.png 文件(/usr/local/var/www/a/1.png)。
更多用法:https://www.hi-linux.com/post...
rewrite 功能就是實現 url 重寫以及重定向。
語法rewrite regex replacement [flag];
rewrite只能放在server{}
,location{}
,if{}
中,而且只能對域名後邊的除去傳遞的參數外的字符串起做用,例如 http://www.xxx.com/a/b/index.html?param=1&u=str
只對 /a/b/index.html 重寫。
rewrite 的執行順序:
flag 標誌位:
last
: 至關於Apache的[L]標記,表示完成rewritebreak
: 中止執行當前虛擬主機的後續 rewrite 指令集redirect
: 返回302臨時重定向,地址欄會顯示跳轉後的地址permanent
: 返回301永久重定向,地址欄會顯示跳轉後的地址location /home/ { rewrite ^/home/test/ http://www.baidu.com; }
上面這個規則:訪問 http://localhost:8080/home/test/
這個地址時,頁面會重定向到 http://www.baidu.com。
一些小tips:
如何 nginx 重定向 url,但不改變瀏覽器中 url 的顯示?
proxy_pass 可指定反向代理
更多用法:https://my.oschina.net/foreve...
cd /usr/local/bin/ ln -s "/Applications/Visual Studio Code.app/Contents/MacOS/Electron" vscode
其中 /Applications/Visual Studio Code.app/Contents/MacOS/Electron
爲 vscode 的可執行文件,ln -s 命令就是將其經過軟鏈接的方式放到 /usr/local/bin/ 目錄下。這樣就能夠在命令行的其餘地方經過 vscode 命令打開文件了。