Nginx实现前后端分离

Nginx可以实现前后端分离,其大致过程如下:

  1. 安装 Nginx

在Linux系统上可以使用apt-get或yum包管理器进行安装,具体命令如下:

sudo apt-get update
sudo apt-get install nginx
  1. 创建一个前端目录和一个API目录

在服务器上创建一个前端目录(例如:/var/www/frontend)和一个API目录(例如:/var/www/api)。

前端目录存放的是前端静态文件。API目录是后端API的集合点。

  1. 添加示例前端代码和后端API代码

在前端目录下放一个示例index.html文件,同时在API目录下放一个示例的API代码文件

index.html内容如下:

<!DOCTYPE html>
<html>
<head>
    <title>Frontend</title>
</head>
<body>
    <h1>Welcome to the Frontend!</h1>
</body>
</html>

API代码文件如下:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Welcome to the API!'

if __name__ == '__main__':
    app.run()
  1. 配置 Nginx

要将请求响应到正确的部分,需要配置nginx。在 /etc/nginx/sites-available 目录下创建一个名为 myapp 的文件。

文件内容如下:

server {
    listen 80;
    server_name example.com;

    location /api {
        proxy_pass http://localhost:5000;
    }

    location / {
        root /var/www/frontend/;
        try_files $uri $uri/ /index.html;
    }
}

这个配置文件有两个主要的部分。

  • /api 部分用来代理到后端API。
  • / 部分用来提供静态前端文件并唯一路由除/api之外的所有请求。

  • 重启 Nginx

执行以下命令以使更改生效:

sudo service nginx restart

至此,Nginx实现前后端分离的过程就完成了。

附两个示例:

  1. 使用React框架中Nginx实现前后端分离

安装React框架:

npm install -g create-react-app
create-react-app my-app
cd my-app
npm start

执行建立一个本地开发的express后端,使用了cors,用于测试Nginx实现前后端分离:

npm install express cors
touch index.js

代码如下:

const express = require('express');
const cors = require('cors');
const app = express();
const port = process.env.PORT || 5000;

app.use(cors());
app.use(express.json());

app.get('/api', (_, res) => {
  res.json({ message: 'Hello API' });
});

app.listen(port, () => {
  console.log(`Server listening on port ${port}`);
});

在 Nginx 中添加配置文件:

server {
    listen 80;
    listen [::]:80;
    server_name example.com;

    location / {
      root /var/www/frontend;
      try_files $uri /index.html;
    }

    location /api {
      proxy_pass http://localhost:5000;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection 'upgrade';
      proxy_set_header Host $host;
      proxy_cache_bypass $http_upgrade;
    }
}
  1. 使用Node.js中的Nginx实现前后端分离

安装Node.js:

curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash -
sudo apt-get install -y nodejs

执行以下命令以建立本地服务器,使用了cors库,用于测试Nginx实现前后端分离:

npm init
npm install express cors --save
touch server.js

源代码如下:

const express = require('express');
const cors = require('cors');

const app = express();
const port = process.env.PORT || 5000;

app.use(cors());
app.use(express.json());

app.get('/api', (_, res) => {
  res.json({ message: 'Hello API' });
});

app.listen(port, () => {
  console.log(`Server listening on port ${port}`);
});

在 Nginx 中添加配置文件:

server {
    listen 80;
    listen [::]:80;
    server_name example.com;

    location / {
      root /var/www/frontend;
      try_files $uri /index.html;
    }

    location /api/ {
      proxy_pass http://localhost:5000/;
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection 'upgrade';
      proxy_set_header Host $host;
      proxy_cache_bypass $http_upgrade;
    }
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Nginx实现前后端分离 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • Linux上搭载Nginx负载均衡配置使用案例详解

    下面我将为您详细讲解如何在Linux上搭载Nginx负载均衡配置使用案例,包括两条示例说明。 1. 安装Nginx 首先在Linux上安装Nginx,在终端输入以下命令: sudo apt update # 更新软件包列表 sudo apt install nginx # 安装Nginx 安装完成后,通过以下命令启动Nginx: sudo systemctl…

    Nginx 2023年5月16日
    00
  • 使用Ingress-Nginx来暴露ArgoCD Web-UI

    未安装ArgoCD参考GitOps实践之kubernetes部署Argocd 1. 查看Argocd Service 可以看到是ClusterIP,因此不能从外部直接访问Argocd的WEB-UI # kubectl get svc -n argocd NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE argocd-a…

    2023年4月10日
    00
  • [Linux] Nginx 提供静态内容和优化积压队列

    1.try_files指令可用于检查指定的文件或目录是否存在; NGINX会进行内部重定向,如果没有,则返回指定的状态代码。例如,要检查对应于请求URI的文件是否存在,请使用try_files指令和$ uri变量,如下所示: server { root /www/data; location /images/ { try_files $uri /images…

    2023年4月9日
    00
  • nginx安装第三方模块的方法

    安装第三方模块是nginx使用过程中比较常见的需求之一,可以使nginx具备更多的功能和更好的性能。下面是nginx安装第三方模块的完整攻略,包含两条示例说明: 安装第三方模块的步骤 下载第三方模块源代码,一般是以.tar.gz或.zip形式提供,可以在作者的github或官网上下载。比如下载nginx-push-stream-module这个模块: bas…

    Nginx 2023年5月16日
    00
  • 1.nginx_add_after_body

    语法: add_before_body uri;默认值: —配置段: http, server, location发起一个子请求,请求给定的uri,并且将内容追加到主题响应的内容之前。 语法: add_after_body uri;默认值: —配置段: http, server, location发起一个子请求,请求给定的uri,并且将内容追加到主题响应的内…

    Nginx 2023年4月12日
    00
  • centos环境下nginx高可用集群的搭建指南

    下面就给您详细讲解在CentOS环境下搭建Nginx高可用集群的攻略。 1. 负载均衡器配置 在搭建Nginx高可用集群之前,需要先搭建一台负载均衡器,这里我们以HAproxy为例。 1.1 安装HAproxy 在CentOS环境下,可以使用以下命令安装HAproxy。 yum install haproxy -y 安装完成后,可以使用以下命令查看HApro…

    Nginx 2023年5月16日
    00
  • nginx vim 单行删除与多行删除

    多行删除 1.首先在命令模式下,输入“:set nu”显示行号; 2.通过行号确定你要删除的行; 3.命令输入“:32,65d”,回车键,32-65行就被删除了,很快捷吧如果无意中删除错了,可以使用‘u’键恢复(命令模式下) 单行删除 光标所在行,dd

    Nginx 2023年4月10日
    00
  • 分享最新版 nginx内置变量 大全

    下面是详细讲解“分享最新版 nginx内置变量 大全”的完整攻略,以及包含两条示例说明。 一、概述 本文主要介绍 nginx 内置变量,并提供了最新版的 nginx 内置变量全集。 二、nginx 内置变量详解 nginx 内置变量主要有以下几种类型: 1. 标量变量 标量变量是 nginx 内置变量中最基础的类型,常用于记录客户端访问信息,例如:$remo…

    Nginx 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部