nginx如何搭建前后端分離架構(gòu)
本人用的是vue-cli 自動(dòng)構(gòu)建vue+webpack 項(xiàng)目,這里不對(duì)webpack、nginx進(jìn)行講解。
本文主要解決前端開發(fā)環(huán)境搭建、測(cè)試環(huán)境搭建、生產(chǎn)環(huán)境搭建以及接口調(diào)試
需要工具
- 1.nginx(配置代理)
- 2.webpack-devserver(啟動(dòng)前端服務(wù))
- 3.postman(接口調(diào)試)
nginx的環(huán)境搭建
nginx.conf 文件配置
開發(fā)環(huán)境
http{
server {
#配置端口號(hào)
listen 9999;
#配置server_name
server_name 127.0.0.1;
#設(shè)置默認(rèn)頁面 地址為webpack-devserver地址
location = / {
proxy_pass http://127.0.0.1:8888/#/home;
}
#這里因?yàn)槲业牡膙ue-router 所以將帶#號(hào)的請(qǐng)求轉(zhuǎn)發(fā)到本地服務(wù)器
location ~ .*#.*$ {
proxy_pass http://127.0.0.1:8888;
}
#請(qǐng)求網(wǎng)頁 圖片 icon 等都會(huì)轉(zhuǎn)發(fā)到本地服務(wù)器上
location ~ .*\.(js|css|htm|html|gif|jpg|jpeg|png|bmp|swf|ico|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma|eot|woff|ttf|svg)$ {
proxy_pass http://127.0.0.1:8888;
}
#請(qǐng)求后端接口的服務(wù)器地址
location ~ .*$ {
proxy_pass http://10.10.1.135:8080;
}
}
}測(cè)試環(huán)境
http{
server {
#配置端口號(hào)
listen 9999;
#配置server_name
server_name 127.0.0.1;
#設(shè)置默認(rèn)頁面 root 為靜態(tài)文件目錄
location = / {
index index.html;
root /html;
}
#請(qǐng)求網(wǎng)頁 圖片 icon 等都會(huì)轉(zhuǎn)發(fā)到nginx靜態(tài)目錄下
location ~ .*\.(js|css|htm|html|gif|jpg|jpeg|png|bmp|swf|ico|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma|eot|woff|ttf|svg)$ {
root /html;
}
#請(qǐng)求后端接口的服務(wù)器地址
location ~ .*$ {
proxy_pass http://10.10.1.135:8080;
}
}
}生產(chǎn)環(huán)境搭建
http{
server {
#配置端口號(hào)
listen 80;
#配置server_name
server_name www.xxx.com;
#設(shè)置默認(rèn)頁面 root 為靜態(tài)文件目錄
location = / {
index index.html;
root /html;
}
#請(qǐng)求網(wǎng)頁 圖片 icon 等都會(huì)轉(zhuǎn)發(fā)到nginx靜態(tài)目錄下
location ~ .*\.(js|css|htm|html|gif|jpg|jpeg|png|bmp|swf|ico|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma|eot|woff|ttf|svg)$ {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
root /html;
}
#請(qǐng)求后端接口的服務(wù)器地址
location ~ .*$ {
proxy_pass http://api.xxx.com;
}
}
}POSTman 接口調(diào)試
get方式

- 1.get請(qǐng)求方式
- 2.url請(qǐng)求地址
- 3.發(fā)送請(qǐng)求
ps:get請(qǐng)求參數(shù)可以寫在url里邊 也可以寫在 下方的key value 里
post方式

- 1.post請(qǐng)求方式
- 2.url請(qǐng)求地址
- 3.發(fā)送請(qǐng)求
- 4.選擇參數(shù)類型
- 5.將參數(shù)寫入
ps:get請(qǐng)求參數(shù)可以寫在url里邊
為什么使用postman
- 1.前端請(qǐng)求后端接口時(shí)發(fā)生錯(cuò)誤,postman測(cè)試接口是否正常,快速定位問題
- 2.一些小公司沒有api文檔,或者文檔不全,通過postman可以快速的判斷接口傳參類型
- ps:甩鍋利器
api基本設(shè)計(jì)規(guī)范
接口說明
- 數(shù)據(jù)格式全部使用json格式
- post/put 使用UTF-8編碼
- 使用HTTP Status Code表示狀態(tài)
- 列表參數(shù)使用start和count
返回狀態(tài)碼說明
通過HTTP Status Code來說明 API 請(qǐng)求是否成功 下面的表格中展示了可能的HTTP Status Code以及其含義
| 狀態(tài)碼 | 含義 | 說明 |
|---|---|---|
| 200 | ok | 請(qǐng)求成功 |
| 201 | CREATED | 創(chuàng)建成功 |
| 202 | ACCEPTED | 更新成功 |
| 401 | UNAUTHORIZED | 未授權(quán)/未登錄 |
| 403 | FORBIDDEN | 被禁止訪問 |
| 404 | NOT FOUND | 請(qǐng)求資源不存在 |
| 500 | INTERNAL SERVER ERROR | 服務(wù)器內(nèi)部錯(cuò)誤 |
通用錯(cuò)誤代碼(具體使用要api文檔中給出)
| 狀態(tài)碼 | 含義 | 說明 |
|---|---|---|
| 999 | unknow_v2_error | 未知錯(cuò)誤 |
| 1000 | need_permission | 需要權(quán)限 |
| 1001 | uri_not_found | 資源不存在 |
| 1002 | missing_args | 參數(shù)不全 |
| 1003 | image_too_large | 上傳的圖片太大 |
| 1004 | input_too_short | 輸入為空,或者輸入字?jǐn)?shù)不夠 |
| 1005 | target_not_fount | 相關(guān)的對(duì)象不存在 |
| 1006 | need_captcha | 需要驗(yàn)證碼,驗(yàn)證碼有誤 |
| 1007 | image_wrong_format | 照片格式有誤(僅支持JPG,JPEG,GIF,PNG或BMP) |
返回json數(shù)據(jù)格式
{
//描述
"msg":"image_too_large,
//狀態(tài)碼
"code":1003,
//數(shù)據(jù)
"data":[]
}url地址解釋
/v1/m/login
| 參數(shù) | 說明 |
|---|---|
| v1 | 版本號(hào) |
| m | 手機(jī)端 |
| Login | 登錄接口 |
版本說明
暫定大版本更替時(shí)更改
例如:
- v1 版本1.x
- v2 版本2.x
常規(guī)接口規(guī)范
列表及分頁接口設(shè)計(jì)
#假定請(qǐng)求數(shù)據(jù)列表 /v1/m/list
請(qǐng)求參數(shù)
| 名稱 | 請(qǐng)求方式 | 類型 | 說明 | 默認(rèn)值 | 是否必填 |
|---|---|---|---|---|---|
| page | GET | 頁碼/第幾頁 | 1 | 否 | |
| limit | GET | 條數(shù) | 10 | 否 |
/v1/lawyer?page=1&limit=10
返回參數(shù)
| 名稱 | 類型 | 說明 |
|---|---|---|
| msg | string | 描述 |
| code | num | 狀態(tài)碼 |
| data | object | 數(shù)據(jù) |
data數(shù)據(jù)格式
| 名稱 | 類型 | 說明 |
|---|---|---|
| pageSize | num | 總頁數(shù) |
| page | num | 當(dāng)前頁 |
| limit | num | 每頁條數(shù) |
| count | num | 總條數(shù) |
| rows | json | 數(shù)據(jù)列表 |
#示例
{
msg:ok,
code:200,
data:{
count:70,
pageSize:7,
limit:10,
page:2,
#此數(shù)據(jù)只是示例,展現(xiàn)數(shù)據(jù)格式
rows:[
{
id:001,
name:zzz
phone:111111
},{
id:002,
name:zzz
phone:111111
},{
id:003,
name:zzz
phone:111111
}
]
}
}詳情頁接口設(shè)計(jì)
請(qǐng)求參數(shù)
| 名稱 | 請(qǐng)求方式 | 類型 | 說明 | 默認(rèn)值 | 是否必填 |
|---|---|---|---|---|---|
| id | GET | string | 產(chǎn)品id | 是 |
#假定產(chǎn)品詳情 /v1/m/product/details?id=001
返回參數(shù)
| 名稱 | 類型 | 說明 |
|---|---|---|
| msg | string | 描述 |
| code | num | 狀態(tài)碼 |
| data | object | 數(shù)據(jù) |
data數(shù)據(jù)格式(并不是真實(shí)字段,僅能代表數(shù)據(jù)格式)
| 名稱 | 類型 | 說明 |
|---|---|---|
| id | num | 產(chǎn)品id |
| name | string | 產(chǎn)品姓名 |
| phone | num | 電話 |
| img | string | 產(chǎn)品頭像 |
#示例
{
msg:ok,
code:200,
data:{
id:001,
name:zzz,
phone:111111,
img:"img src 路徑"
}
}總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
利用nginx搭建靜態(tài)資源服務(wù)器的方法步驟
這篇文章主要介紹了利用nginx搭建靜態(tài)資源服務(wù)器的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
使用Nginx實(shí)現(xiàn)HTTPS雙向驗(yàn)證的方法
這篇文章主要介紹了使用Nginx實(shí)現(xiàn)HTTPS雙向驗(yàn)證的方法,涉及到單向驗(yàn)證和雙向驗(yàn)證的區(qū)別介紹,本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,感興趣的朋友一起學(xué)習(xí)吧2016-06-06
通過Nginx配置實(shí)現(xiàn)外網(wǎng)訪問內(nèi)網(wǎng)數(shù)據(jù)庫的操作指南
項(xiàng)目開發(fā)部署中經(jīng)常會(huì)遇到MySQL或Oracle數(shù)據(jù)庫安裝在內(nèi)網(wǎng),而我們的應(yīng)用服務(wù)只能部署在外網(wǎng),如果實(shí)現(xiàn)外網(wǎng)服務(wù)訪問連接內(nèi)網(wǎng)的數(shù)據(jù)庫呢?本次介紹如何通過Nginx配置實(shí)現(xiàn)外網(wǎng)訪問內(nèi)網(wǎng)數(shù)據(jù)庫,需要的朋友可以參考下2023-10-10
詳解Nginx進(jìn)行TCP代理配置的詳細(xì)指南
Nginx 是一個(gè)高性能的 HTTP 和反向代理服務(wù)器,它也支持 TCP/UDP 的負(fù)載均衡,本文將介紹如何配置 Nginx 作為 TCP 代理,需要的可以了解下2025-07-07
使用LDAP實(shí)現(xiàn)Nginx用戶認(rèn)證的示例
本文主要使用Nginx和LDAP實(shí)現(xiàn)用戶認(rèn)證,通過配置Nginx和安裝nginx-auth-ldap模塊,可以實(shí)現(xiàn)基于LDAP的認(rèn)證邏輯,下面就來介紹一下,感興趣的可以了解一下2024-12-12

