前端Nginx的安装与应用

目录

一、前端跨域方式

1.1、CORS(跨域资源共享)

1.2、JSONP(已过时)

1.3、WebSocket

1.4、PostMessage

1.5、Nginx

二、安装

三、应用

四、命令

4.1、基本操作命令

4.2、nginx.conf介绍

4.2.1、location模块

4.2.2、反向代理配置

4.2.3、负载均衡模块

4.2.4、通过反向代理来实现负载均衡

一、前端跨域方式

1.1、CORS(跨域资源共享)

后端服务器可以通过设置特定的HTTP响应头来允许或限制跨域请求。

  • Access-Control-Allow-Origin:指定允许访问资源的源。
  • Access-Control-Allow-Methods:指定允许的HTTP方法。
  • Access-Control-Allow-Headers:指定允许的HTTP请求头。
  • Access-Control-Allow-Credentials:指定是否允许发送Cookie

1.2、JSONP(已过时)

依赖于<script>标签可以跨域加载资源的特性。由于安全原因,现代浏览器不再推荐使用JSONP

1.3、WebSocket

WebSocket协议不遵循同源策略,因此可以用于跨域通信。但它主要用于实时通信场景。

1.4、PostMessage

HTML5引入的window.postMessage方法可以安全地实现跨源通信。它允许来自不同源的页面间发送消息。

1.5、Nginx

配置 Nginx 作为反向代理: 在你的 Nginx 配置文件中,设置一个 server 块来处理前端应用的请求,并使用 proxy_pass 指令将请求转发到后端服务器。

添加 CORS 相关的响应头: 在 server 块中,使用 add_header 指令添加 CORS 相关的响应头,以允许跨域请求。

二、安装

Nginx:一个HTTP服务器。不仅能将服务器上的静态文件(HTML、图片)通过HTTP协议展现给客户端,还可以通过反向代理来实现负载均衡。

官网:https://nginx.org/en/download.html

可以下载Stable version(稳定版),其中左边是Linux版,右边是Windows版。

nginx-1.26.2  pgpnginx/Windows-1.26.2  pgp

安装成功后文件夹列表内容如下:

启动方法:

(1)、直接双击该目录下的"nginx.exe",即可启动nginx服务器;

(2)、命令行进入该文件夹,执行start nginx命令,也会直接启动nginx服务器。

输入localhost回车后出现如下页面,表示成功启动:

三、应用

  在启动前,更换conf里的nginx.conf【自己按照自己公司的后端地址进行配置】,然后前端本地启动项目,将原始端口8080改为nginx.conf里后端地址对应的端口,即可访问到该后端数据,相当于proxy的配置。

原始的proxy内容:

  devServer: {
    proxy: {
      '/api/': {
        // target: 'http://10.168.31.xx:8090',//后端001
        target: 'http://10.168.31.xx:8090',//后端002
        headers: {
          Host: 'xx.xx.cn',
          Origin: 'http://xx.xx.cn/'
        }
      },
      '/erpimg/': {
        target: 'http://10.168.31.xx:xx',
        pathRewrite: {
          '^/erpimg/': ''
        },
        headers: {
          Host: 'xx.xx.cn',
          Origin: 'http://xx.xx.cn/'
        }
      },
      '/watermelon/job/': {
        target: 'http://10.168.31.xx:xx'
      },
      '/watermelon/': {
        target: 'http://10.168.31.xx:xx'
      },
      '/ws/': {
        target: 'http://10.168.xx.xx',
        headers: {
          Host: 'xx.xx.cn',
          Origin: 'http://xx.xx.cn/'
        },
        ws: true
      }
    },
    disableHostCheck: true //  新增该配置项
  },

四、命令

4.1、基本操作命令

启动服务:start nginx【Windows版】              nginx【Linux版】
退出服务:nginx -s quit
强制关闭服务:nginx -s stop
重载服务:nginx -s reload(重载服务配置文件,类似于重启,服务不会中止)
验证配置文件:nginx -t
使用配置文件:nginx -c "配置文件路径"
使用帮助:nginx -h

4.2、nginx.conf介绍

在项目使用中,使用最多的三个核心功能是静态服务器、反向代理、负载均衡

文件主要模块如下:

main                                # 全局配置
events {                            # 工作模式配置
} 
http {                              # http设置
    ....
    server {                        # 服务器主机配置(虚拟主机、反向代理等)
        ....
        location {                  # 路由配置(虚拟目录等)
            ....
        }
        location path {
            ....
        }
        location otherpath {
            ....
        }
    }
    server {
        listen 28885;
        server_name _;
        location / {
            proxy_pass http://localhost:8080;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;
            proxy_set_header Host $http_host;
            proxy_buffering off;
            proxy_read_timeout 10m;
            add_header Access-Control-Allow-Origin: *; # 允许所有域进行跨域请求
        }
        location /api/ {
            proxy_set_header REMOTE-HOST $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Host xx.xx.cn;
            proxy_set_header X-real-ip $remote_addr;
            proxy_pass http://10.168.31.xx;
            proxy_read_timeout 10m;
            client_max_body_size 100m;
        }
        location /erpimg/ {
            proxy_set_header REMOTE-HOST $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-real-ip $remote_addr;
            proxy_pass http://192.168.31.xx:4869/;
            # proxy_pass https://zz.zz.cn;
            proxy_read_timeout 10m;
        }
        location /ws {
            proxy_pass http://10.168.31.xx;
            proxy_set_header Host xx.xx.cn;
            # proxy_pass https://zz.zz.cn;
            proxy_set_header Origin https://xx.xx.cn;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }
    }
    upstream name {                  # 负载均衡配置
    ip_hash;                         
    server 192.168.1.100:8000;
    server 192.168.1.100:8001 down;       
    server 192.168.1.100:8002 max_fails=3;
    server 192.168.1.100:8003 fail_timeout=20s;
    server 192.168.1.100:8004 max_fails=3 fail_timeout=20s;
    }
}

4.2.1、location模块

location模块主要用于配置路由访问信息。

4.2.2、反向代理配置

通过反向代理代理服务器访问模式,通过proxy_set配置让客户端访问透明化

4.2.3、负载均衡模块

主要负责负载均衡的配置,通过默认的轮询调度方式来分发请求到后端服务器。

ip_hash:指定请求调度算法,默认是weight权重轮询调度,可以指定
server host:port:分发服务器的列表配置
down:表示该主机暂停服务
max_fails:表示失败最大次数,超过失败最大次数暂停服务
fail_timeout:表示如果请求受理失败,暂停指定的时间之后重新发起请求。

4.2.4、通过反向代理来实现负载均衡

  当网站访问量非常大,网站越来越慢,一台服务器已经不够用了。于是将相同的应用部署在多台服务器上,将大量用户的请求分配给多台机器处理。

好处:其中一台服务器万一挂了,只要还有其他服务器正常运行,就不会影响用户使用。Nginx可以通过反向代理来实现负载均衡。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/908905.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【三角回文数——枚举】

题目 代码 #include <bits/stdc.h> using namespace std; bool is_palindrome(int num) {string t to_string(num);int l 0, r t.size() - 1;while (l < r){if (t[l] ! t[r--])return false;}return true; } bool is_tri(int num) {int t num * 2;for (int i 1;…

【面试经典150】day 11

目录 1.无重复字符的最长子串 2.串联所有单词的子串 3.最小覆盖子串 4.有效的数独 ​​​​​​​ 1.无重复字符的最长子串 class Solution {public int lengthOfLongestSubstring(String s) {//定义哈希表Map<Character,Integer> dictnew HashMap<>();int ret…

ArcGIS影像调色(三原色)三原色调整

本期主要介绍ArcGIS影像调色&#xff08;三原色&#xff09; ArcGIS影像调色&#xff08;三原色&#xff09;&#xff0c;对比度、亮度、gamma。红绿蓝三原色调整。 视频学习 ArcGIS影像调色&#xff08;三原色&#xff09;

默认路由:实现内网所有网段流量走一条默认路由访问外网

默认路由 Tip&#xff1a;默认路由一般指出口网关设备的出口路由。实现所有网段流量都走一条路由。 实验模拟&#xff1a;公司内部pc 通过出口网关 访问运营商内部 baidu服务 isp网关配置&#xff1a; <Huawei>sy Enter system view, return user view with CtrlZ. …

Linux SSH免密登入以及配置脚本

一、ssh原理简单介绍 客户端生成一对公钥和私钥&#xff0c;并将自己的公钥发送到服务器上 其中公钥用来加密&#xff0c;私钥用来解密。 二、ssh免密登入实现步骤详解 我这就以服务器controller和客户端compute来做为例子 2.1、首先在controller上输入ssh-keygen -t rsa …

【大数据学习 | kafka】producer之拦截器,序列化器与分区器

1. 自定义拦截器 interceptor是拦截器&#xff0c;可以拦截到发送到kafka中的数据进行二次处理&#xff0c;它是producer组成部分的第一个组件。 public static class MyInterceptor implements ProducerInterceptor<String,String>{Overridepublic ProducerRecord<…

使用Mac如何才能提高OCR与翻译的效率

OCR与截图大家都不陌生&#xff0c;或许有的朋友对于这两项功能用到的不多&#xff0c;但是如果经常会用到的话&#xff0c;那你就该看看了 iOCR&#xff0c;快捷键唤出翻译窗口&#xff0c;不论是截图翻译、划词翻译、输入翻译、剪切板翻译&#xff0c;统统快捷键完成&#x…

Java面向对象 C语言字符串常量

1. &#xff08;1&#xff09;. package liujiawei;public class Phone {String brand;double price;public void call(){System.out.println("手机打电话");}public void play(){System.out.println("手机打游戏");} } public class phonetest {public…

Halcon-模板匹配(WPF)

halcon的代码 dev_open_window (0, 0, 512, 512, black, WindowHandle) read_image (Image, C:/Users/CF/Desktop/image.jpg) dev_display (Image)draw_rectangle1 (WindowHandle, Row1, Column1, Row2, Column2) gen_rectangle1 (Rectangle, Row1, Column1, Row2, Column2) r…

Day02 C++ 环境设置

2024.11.1 C 环境设置 如果您想要设置 C 语言环境&#xff0c;需要确保电脑上有以下两款可用的软件&#xff0c;文本编辑器和 C 编译器。 一、文本编辑器 通过编辑器创建的文件通常称为源文件&#xff0c;源文件包含程序源代码。 C 程序的源文件通常使用扩展名 .cpp、.cp 或…

c++拷贝构造函数

1.拷贝构造函数 拷贝构造函数的调用时机 class A { public://默认构造函数A(){m_Hp 100;cout << "A默认构造函数调用完毕" << endl;}//有参构造函数A(int hp){m_Hp hp;cout << "A有参构造函数调用完毕" << endl;}A(const A&…

Node.js 完全教程:从入门到精通

Node.js 完全教程&#xff1a;从入门到精通 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境&#xff0c;允许开发者在服务器端使用 JavaScript。它的非阻塞 I/O 和事件驱动架构使得 Node.js 非常适合于构建高性能的网络应用。本文将详细介绍 Node.js 的安装、基本语…

C++STL——list

C教学总目录 list 1、list简介2、构造函数3、迭代器4、访问和容量函数5、修改类函数6、操作类函数 1、list简介 list是带头双向循环链表&#xff0c;也是模板类&#xff0c;使用时要指明类型&#xff0c;包含于头文件<list> 由于list是双向循环链表&#xff0c;在任意位置…

大数据计算里的-Runtime Filter

文章目录 Runtime Filter示例 Runtime Filter 从纸面意义来看&#xff0c;就是程序在运行时&#xff0c;根据实际的数据去进行一些过滤操作。这和静态的规则优化不同&#xff0c;静态优化不考虑实现的数据的分布。 示例 select a.* ,b.* a join b on a.idb.id假设一下数据…

SD教程 ControlNet 之MLSD 室内设计

你是否已经厌倦了传统的室内设计方式&#xff0c;想探索新方法来增强作品设计感&#xff1f;本期小编就同大家分享一个新武器&#xff0c;用Stable Diffusion的ControlNet来打造一个室内设计全新工作流。无论你是经验丰富的室内设计师还是初学小白&#xff0c;都将使你的日常工…

蓬勃发展:移动开发——关于软件开发你需要知道些什么

一、前言 移动开发一直都是软件开发领域中最有趣的领域之一&#xff0c;这是因为&#xff1a; 1、移动开发为“只有一个人”的开发团队提供了一个非常独特的机会&#xff0c;让他可以在相对较短的时间内建立一个实际的、可用的、有意义的应用程序&#xff1b; 2、移动开发也代…

性能测试 —— MySQL性能测试方案设计!

01、慢查询 查看是否开启慢查询 mysql> show variables like %slow%’; 如图所示&#xff1a; 系统变量log_slow_admin_statements 表示是否将慢管理语句例如ANALYZE TABLE和ALTER TABLE等记入慢查询日志 启用log_slow_extra系统变量 &#xff08;从MySQL 8.0.14开始提…

每日OJ题_牛客_爱吃素_数学_C++_Java

目录 牛客_爱吃素_数学 题目解析 C代码 Java代码 牛客_爱吃素_数学 爱吃素 (nowcoder.com) 描述&#xff1a; 牛妹是一个爱吃素的小女孩&#xff0c;所以很多素数都害怕被她吃掉。 一天&#xff0c;两个数字aaa和bbb为了防止被吃掉&#xff0c;决定和彼此相乘在一…

Vue 自定义icon组件封装SVG图标

通过自定义子组件CustomIcon.vue使用SVG图标&#xff0c;相比iconfont下载文件、重新替换更节省时间。 子组件包括&#xff1a; 1. Icons.vue 存放所有SVG图标的path 2. CustomIcon.vue 通过icon的id索引对应的图标 使用的时候需要将 <Icons></Icons> 引到使用的…

MySQL-如果你在添加外键时忘加约束名,如何找到系统默认的约束名

问题 在你添加约束的时候&#xff0c;一般都会为其取名以方便后期的修改&#xff0c;但是如果你忘记了呢&#xff0c;如何找到系统默认的约束名 解决方法 -- 查找约束名 SELECTCONSTRAINT_NAME FROMINFORMATION_SCHEMA.KEY_COLUMN_USAGE WHERETABLE_NAME emp ANDREFERENCED_T…