Linux中使用NGINX

news2024/12/23 13:23:01

NGINX简介

  • Nginx(engine x)
  • 是俄罗斯人编写的十分轻量级的HTTP服务器
  • 是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP代理服务器
  • 官方网站:http://nginx.org/

NGINX概述

  • Nginx默认配置文件:/etc/nginx/nginx.conf
  • Nginx调用配置文件:/etc/nginx/conf.d/*.conf
  • Nginx默认使用端口:80

实验架构

安装Nginx

虚拟机A操作

[root@javasv-A ~]# dnf -y install nginx					#安装nginx服务
[root@javasv-A ~]# rpm -q nginx 						#查看是否安装成功

Nginx配置文件解析

[root@javasv-A ~]# cat /etc/nginx/nginx.conf
# For more information on configuration, see:
#   * Official English Documentation: http://nginx.org/en/docs/
#   * Official Russian Documentation: http://nginx.org/ru/docs/

user nginx;									#worker进程归属用户
worker_processes auto;						#启动工作进程数量(通常与CPU核心数一致)
error_log /var/log/nginx/error.log;			#错误日志
pid /run/nginx.pid;							#pid文件位置

# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;	#引入动态模块相关配置

#事件模型相关配置
events {
    worker_connections 1024;				#单个worker进程可接受的最大并发量
}

#web服务块
http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';		#日志格式

    access_log  /var/log/nginx/access.log  main;	#访问日志
	
    sendfile            on;							#加快静态文件传输
    tcp_nopush          on;							#合并请求后统一发送给客户端
    tcp_nodelay         on;							#不延时发送
    keepalive_timeout   65;							#会话保持事件
    types_hash_max_size 2048;						#哈希表大小

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    # Load modular configuration files from the /etc/nginx/conf.d directory.
    # See http://nginx.org/en/docs/ngx_core_module.html#include
    # for more information.
    include /etc/nginx/conf.d/*.conf;				#子配置文件路径

	#虚拟主机块
    server {
        listen       80 default_server;				#监听ipv4端口
        listen       [::]:80 default_server;		#监听ipv6端口
        server_name  _;								#虚拟主机名
        root         /usr/share/nginx/html;			#网站根目录

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        location / {								#匹配路径
        }

        error_page 404 /404.html;					#错误页面
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;		#错误页面
            location = /50x.html {
        }
    }

# Settings for a TLS enabled server.
#
#    server {
#        listen       443 ssl http2 default_server;
#        listen       [::]:443 ssl http2 default_server;
#        server_name  _;
#        root         /usr/share/nginx/html;
#
#        ssl_certificate "/etc/pki/nginx/server.crt";
#        ssl_certificate_key "/etc/pki/nginx/private/server.key";
#        ssl_session_cache shared:SSL:1m;
#        ssl_session_timeout  10m;
#        ssl_ciphers PROFILE=SYSTEM;
#        ssl_prefer_server_ciphers on;
#
#        # Load configuration files for the default server block.
#        include /etc/nginx/default.d/*.conf;
#
#        location / {
#        }
#
#        error_page 404 /404.html;
#            location = /40x.html {
#        }
#
#        error_page 500 502 503 504 /50x.html;
#            location = /50x.html {
#        }
#    }

}

Nginx服务测试

[root@javasv-A ~]# systemctl start nginx 			#启动nginx服务
[root@javasv-A ~]# systemctl enable nginx			#将nginx服务设置为开机自启
[root@javasv-A ~]# ss -nutlp | grep :80				#查看80端口

打开浏览器访问:自己的ip地址

Nginx虚拟web主机

  • 虚拟主机:一个Nginx服务上运行多个网站
  • 类型:
    • 基于域名的虚拟主机
    • 基于端口的虚拟主机
    • 基于IP地址的虚拟主机
##部署基于域名的虚拟主机

#编写虚拟主机配置文件(采用子配置文件的方式)
[root@javasv-A ~]# vim /etc/nginx/conf.d/site1.conf
[root@javasv-A ~]# cat /etc/nginx/conf.d/site1.conf 
server {
    listen 80;
    server_name site1.tedu.cn;

    location / {
        root "/usr/share/nginx/html/site1/";
        index index.html index.htm;
    }
}
[root@javasv-A ~]# vim /etc/nginx/conf.d/site2.conf
[root@javasv-A ~]# cat /etc/nginx/conf.d/site2.conf 
server {
    listen 80;
    server_name site2.tedu.cn;

    location / {
        root "/usr/share/nginx/html/site2/";
        index index.html index.htm;
    }
}
[root@javasv-A ~]# 

#创建虚拟主机网站根目录及测试页面
[root@javasv-A ~]# mkdir /usr/share/nginx/html/site1
[root@javasv-A ~]# mkdir /usr/share/nginx/html/site2
[root@javasv-A ~]# vim /usr/share/nginx/html/site1/index.html
[root@javasv-A ~]# vim /usr/share/nginx/html/site2/index.html
[root@javasv-A ~]# cat /usr/share/nginx/html/site1/index.html 
site1
[root@javasv-A ~]# cat /usr/share/nginx/html/site2/index.html 
site2
[root@javasv-A ~]# 

#重启服务
[root@javasv-A ~]# systemctl restart nginx

#修改hosts文件并访问测试
[root@javasv-A ~]# vim /etc/hosts
[root@javasv-A ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1   site1.tedu.cn site2.tedu.cn
[root@javasv-A ~]# curl http://site1.tedu.cn/
site1
[root@javasv-A ~]# curl http://site2.tedu.cn/
site2
[root@javasv-A ~]# 

#清理测试配置
[root@javasv-A ~]# rm -rf /etc/nginx/conf.d/site1.conf /etc/nginx/conf.d/site2.conf 
[root@javasv-A ~]# rm -rf /usr/share/nginx/html/site1/
[root@javasv-A ~]# rm -rf /usr/share/nginx/html/site2/
[root@javasv-A ~]# systemctl restart nginx

Nginx动静分离

什么是动静分离

  • 动静分离是一种常见的架构设计模式
    • 用于将处理静态内容和动态内容的工作分开
    • 以提高网站性能和可伸缩性

Nginx动静分离

  • 动静分离的主要思想是让 Nginx 专注于处理静态内容(如 HTML、CSS、JavaScript、图片等)
  • 而将动态内容(如 PHP、JSP、ASP.NET 等)交给后端应用服务器(如 Apache、Tomcat、IIS 等)来处理

Nginx动静分离处理方法

  • 静态资源由 Nginx 直接处理:
    • Nginx 作为前端服务器直接处理静态内容的请求,例如 HTML、CSS、JavaScript 文件和图片等
    • 由于 Nginx 是轻量级的高性能 Web 服务器,它能够快速地响应对这些静态资源的请求
  • 动态内容交由后端应用服务器处理:
    • 对于动态内容的请求,比如 PHP、JSP、ASP.NET 等页面,Nginx 通过反向代理将这部分请求转发给后端的应用服务器处理
    • 后端应用服务器负责执行动态内容的逻辑,并将结果返回给 Nginx,再由 Nginx 返回给客户端
  • 负载均衡:
    • 如果有多个后端应用服务器,Nginx 可以作为负载均衡器,将动态请求分发到不同的后端服务器上
    • 以提高整体的并发处理能力和可靠性

Nginx动静分离测试

安装java环境: java-1.8.0-openjdk

[root@javasv-A ~]# dnf -y install java-1.8.0-openjdk			#安装jdk
[root@javasv-A ~]# java -version								#查看版本

部署jsp测试页面

[root@javasv-A ~]# vim /usr/share/nginx/html/time.jsp 
<html>
    <head>
        <meta charset='utf-8'>
    </head>
    <body>
        <center>
            Now time is: <%=new java.util.Date()%> <!--通过基类调用系统时间-->
        </center>
    </body>
</html>
[root@javasv-A ~]#
#访问测试,结果为curl返回页面源代码,浏览器访问直接下载页面
[root@javasv-A ~]# curl http://localhost/time.jsp
<html>
    <head>
        <meta charset='utf-8'>
    </head>
    <body>
        <center>
            Now time is: <%=new java.util.Date()%> <!--通过基类调用系统时间-->
        </center>
    </body>
</html>[root@javasv-A ~]# 

部署Java应用Tomcat

  • 将2024-AI大模型Java全链路工程师环境资料/第四模块/apache-tomcat-9.0.6.tar.gz上传至虚拟机A的/root
  • 使用WindTerm的上传/下载功能,需要提前在虚拟机中安装lrzsz软件
[root@javasv-A ~]# dnf -y install lrzsz

安装tomcat服务

[root@javasv-A ~]# tar -xf apache-tomcat-9.0.6.tar.gz 		#解压缩tomcat源码
[root@javasv-A ~]# mv apache-tomcat-9.0.6 /usr/local/tomcat	#移动安装目录并改名

停止/启动服务(最后将服务启动)

[root@javasv-A ~]# /usr/local/tomcat/bin/startup.sh			#启动服务
[root@javasv-A ~]# /usr/local/tomcat/bin/shutdown.sh		#停止服务
[root@javasv-A ~]# /usr/local/tomcat/bin/startup.sh			#启动服务
[root@javasv-A ~]# ss -nutlp | grep java		#查看端口(8080、8005、8009)

部署jsp页面至tomcat服务

[root@javasv-A ~]# cp /usr/share/nginx/html/time.jsp /usr/local/tomcat/webapps/ROOT/
[root@javasv-A ~]# curl http://192.168.8.100:8080/time.jsp	#访问测试
<html>
    <head>
        <meta charset='utf-8'>
    </head>
    <body>
        <center>
            Now time is: Mon May 06 18:34:54 CST 2024 <!--通过基类调用系统时间-->
        </center>
    </body>
</html>
[root@javasv-A ~]# 

配置Nginx动静分离

[root@javasv-A ~]# vim /etc/nginx/nginx.conf
...原有配置不动...
 50         location ~ \.jsp$ {
 51             proxy_pass http://127.0.0.1:8080;   
 52         } 
...原有配置不动

#重启nginx服务并测试
[root@javasv-A ~]# systemctl restart nginx
[root@javasv-A ~]# curl http://192.168.8.100/time.jsp		#访问测试
<html>
    <head>
        <meta charset='utf-8'>
    </head>
    <body>
        <center>
            Now time is: Mon May 06 19:37:09 CST 2024 <!--通过基类调用系统时间-->
        </center>
    </body>
</html>

Nginx代理服务

  • 代理服务是一种网络服务,允许客户端通过中间服务器(即代理服务器)与目标服务器进行通信。代理服务器接收来自客户端的请求,然后将这些请求转发给目标服务器,再将目标服务器的响应返回给客户端。
  • Nginx作为代理服务器的优势
    • 高性能:Nginx采用了异步非阻塞的事件驱动模型,能够处理大量的并发连接和请求,具有出色的性能和可扩展性。
    • 稳定性:Nginx经过严格的测试和优化,具有极高的稳定性和可靠性,能够在各种复杂的网络环境中稳定运行。
    • 易用性:Nginx的配置文件简洁明了,易于学习和使用。同时,Nginx提供了丰富的模块和指令,可以满足各种复杂的代理需求。
    • 灵活性:Nginx可以作为正向代理服务器、反向代理服务器或负载均衡器使用,支持多种协议和扩展模块,具有极高的灵活性。

实验架构

主机名IP地址配额角色
proxyens160: 192.168.4.50|ens192: 192.168.8.501G内存1CPU代理服务器
javasv-Aens160: 192.168.8.1001G内存1CPUweb服务器
javasv-Bens160: 192.168.8.1011G内存1CPUweb服务器
windowsvmnet1: 192.168.4.254---客户端
  • 使用模板机重新克隆虚拟机A、虚拟机B、虚拟机proxy
  • 克隆后的机器是有配置好的yum仓库以及关闭了防火墙和SElinux
  • 配置完毕后使用WindTerm将虚拟机远程连接

虚拟机A操作

[root@template ~]# hostnamectl set-hostname javasv-A		修改主机名
[root@javasv-A ~]# nmcli connection show					#查看网卡名

#配置入网参数
 ~]# nmcli connection modify ens160 ipv4.method manual ipv4.addresses 192.168.8.100/24 ipv4.gateway 192.168.8.254 ipv4.dns 192.168.8.254 connection.autoconnect yes
[root@javasv-A ~]# nmcli connection up  ens160				#激活网卡
[root@javasv-A ~]# dnf clean all
[root@javasv-A ~]# dnf repolist -v							#查看yum仓库是否可用

虚拟机B操作(注意网卡名不要照抄,以自己的为准)

[root@template ~]# hostnamectl set-hostname javasv-B		修改主机名
[root@javasv-B ~]# nmcli connection show					#查看网卡名

#配置入网参数
 ~]# nmcli connection modify ens160 ipv4.method manual ipv4.addresses 192.168.8.101/24 ipv4.gateway 192.168.8.254 ipv4.dns 192.168.8.254 connection.autoconnect yes
[root@javasv-B ~]# nmcli connection up  ens160				#激活网卡
[root@javasv-B ~]# dnf clean all
[root@javasv-B ~]# dnf repolist -v							#查看yum仓库是否可用

配置虚拟机proxy,添加一块网卡

 

 Windows将虚拟网卡vmnet1的IP地址配置为:192.168.4.254/24

 

 

 

[root@template ~]# hostnamectl set-hostname proxy		#修改主机名
[root@proxy ~]# nmcli connection show					#查看网卡连接名
[root@proxy ~]# nmcli connection modify ens160 ipv4.method manual ipv4.addresses 192.168.4.50/24 connection.autoconnect yes		#配置IP地址
[root@proxy ~]# nmcli connection up ens160				#激活网卡

添加第二块网卡

[root@proxy ~]# nmcli device status 					#查看网卡设备(以查看到的为准)
DEVICE  TYPE      STATE         CONNECTION 
ens160  ethernet  已连接        ens160     
virbr0  bridge    连接(外部)  virbr0     
ens192  ethernet  已断开        --         
lo      loopback  未托管        --  
~]# nmcli connection add ifname ens192 con-name ens192 type ethernet
[root@proxy ~]# nmcli connection modify ens192 ipv4.method manual ipv4.addresses 192.168.8.50/24 ipv4.gateway 192.168.8.254 ipv4.dns 192.168.8.254 connection.autoconnect yes				  #配置入网参数
[root@proxy ~]# nmcli connection up ens192 				 #激活网卡

部署后端web服务器集群

  • 配置后端web服务器,部署Nginx服务,编写测试页面

虚拟机A操作

[root@javasv-A ~]# dnf -y install nginx					#安装nginx
[root@javasv-A ~]# echo AAA > /usr/share/nginx/html/index.html	#编写测试页面
[root@javasv-A ~]# systemctl restart nginx 					#重启nginx服务
[root@javasv-A ~]# systemctl enable nginx					#将服务设置为开机自启
[root@javasv-A ~]# ss -nutlp | grep :80						#查看端口
[root@javasv-A ~]# curl 192.168.8.100

虚拟机B操作

[root@javasv-B ~]# dnf -y install nginx						#安装nginx
[root@javasv-B ~]# echo BBB > /usr/share/nginx/html/index.html	#编写测试页面
[root@javasv-B ~]# systemctl restart nginx 					#重启nginx服务
[root@javasv-B ~]# systemctl enable nginx					#将服务设置为开机自启
[root@javasv-B ~]# ss -nutlp | grep :80						#查看端口
[root@javasv-B ~]# curl 192.168.8.101						#访问测试

部署proxy代理服务器

配置Nginx服务器,添加服务器池,实现反向代理功能,

  • 使用upstream定义后端服务器集群,集群名称任意(如backend)
  • 使用server定义集群中的具体服务器和端口
[root@proxy ~]# dnf -y install nginx						#安装nginx
[root@proxy ~]# vim /etc/nginx/nginx.conf					#修改代理服务配置文件
 37     upstream backend {									#定义集群
 38         server 192.168.8.100:80;						#声明集群成员
 39         server 192.168.8.101:80;						#声明集群成员
 40     }
 41     server {
 42         listen       80 default_server;
 43         listen       [::]:80 default_server;
 44         server_name  _;
 45         root         /usr/share/nginx/html;
 46 
 47         # Load configuration files for the default server block.
 48         include /etc/nginx/default.d/*.conf;
 49 
 50         location / {
 51                 proxy_pass http://backend/;				#调用集群
 52         }
 [root@proxy ~]# systemctl restart nginx					#重启nginx
 [root@proxy ~]# systemctl enable nginx						#将服务设置为开机自启

访问测试

  • 客户端可以使用命令行访问代理服务器,也可以使用真机浏览器访问代理服务器,不过要注意缓存
[root@proxy ~]# curl 192.168.4.50
AAA
[root@proxy ~]# curl 192.168.4.50
BBB
[root@proxy ~]# curl 192.168.4.50
AAA
[root@proxy ~]# curl 192.168.4.50
BBB

集群健康检查

集群成员可以设置如下属性,用于更加合理的针对不同环境完成更加合理的负载均衡

  • weight设置服务器权重值,默认值为1
  • max_fails设置最大失败次数,测试服务器几次才确认服务器失败
  • fail_timeout设置失败超时时间,单位为秒
  • down标记服务器已关机,不参与集群调度
[root@proxy ~]# vim /etc/nginx/nginx.conf
……
upstream backend {
	server 192.168.8.100:80 weight=2 max_fails=2 fail_timeout=30;
	server 192.168.8.101:80 weight=1;
    }

访问测试

[root@proxy ~]# curl 192.168.4.50
AAA
[root@proxy ~]# curl 192.168.4.50
AAA
[root@proxy ~]# curl 192.168.4.50
BBB

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

scrapy爬取名人名言

爬取名人名言&#xff1a;http://quotes.toscrape.com/ 1 创建爬虫项目&#xff0c;在终端中输入&#xff1a; scrapy startproject quotes2 创建之后&#xff0c;在spiders文件夹下面创建爬虫文件quotes.py&#xff0c;内容如下&#xff1a; import scrapy from scrapy.spi…

mmsegmentation训练自己的数据集

文章目录 前言一、安装MMSegmentation二、数据集转换1.labelme标签数据转化为voc数据 三、训练设置1.建立数据集文件&#xff0c;并存入数据集2.设置训练配置文件 四、使用官方权重1、选择预测的方法2、查看方法支持的预训练数据集和权重权重位置找到对应的数据集下载权重 3、使…

LeetCode994. 腐烂的橘子(2024秋季每日一题 54)

在给定的 m x n 网格 grid 中&#xff0c;每个单元格可以有以下三个值之一&#xff1a; 值 0 代表空单元格&#xff1b;值 1 代表新鲜橘子&#xff1b;值 2 代表腐烂的橘子。 每分钟&#xff0c;腐烂的橘子 周围 4 个方向上相邻 的新鲜橘子都会腐烂。 返回 直到单元格中没有…

Pinctrl子系统中Pincontroller构造过程驱动分析:imx_pinctrl_soc_info结构体

往期内容 本专栏往期内容&#xff1a; Pinctrl子系统和其主要结构体引入Pinctrl子系统pinctrl_desc结构体进一步介绍Pinctrl子系统中client端设备树相关数据结构介绍和解析 input子系统专栏&#xff1a; 专栏地址&#xff1a;input子系统input角度&#xff1a;I2C触摸屏驱动分析…

地理信息科学专业想搞GIS开发:学前端还是后端?

地理信息科学专业的同学是学前端开发比较好呢还是学后端开发比较好呢&#xff1f; 部分网友&#xff1a;学前端更好 主修前端更好&#xff0c;因为地信学后端&#xff0c;是卷不赢学计算机的 本科卷前端&#xff0c;硕士阶段可以卷后端 甚至有网友直呼&#xff0c;地信根本没有…

批处理之for语句从入门到精通--呕血整理

文章目录 一、前言二、for语句的基本用法三、文本解析显神威&#xff1a;for /f 用法详解四、翻箱倒柜遍历文件夹&#xff1a;for /r五、仅仅为了匹配第一层目录而存在&#xff1a;for /d六、计数循环&#xff1a;for /l后记 for语句从入门到精通 一、前言 在批处理中&#…

第8章利用CSS制作导航菜单(第八次作业)

效果图如下&#xff1a; Html代码如下&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><title>山水之间</title><style type"text/css">import url("../css/work1.css");</style…

Ubuntu22.04 安装图形界面以及XRDP教程

一、准备环境 1.一台服务器安装系统ubuntu&#xff08;这里大部分ubuntu系统可以同用&#xff09; 2.安装的ubuntu系统未安装图形界面 二、操作步骤 1.远程ssh或者直接登录服务器命令行界面 ssh -p 远程端口 rootIP 2.更新系统软件包 sudo apt update # 更新本地的软件包…

深度学习基础知识-编解码结构理论超详细讲解

编解码结构&#xff08;Encoder-Decoder&#xff09;是一种应用广泛且高效的神经网络架构&#xff0c;最早用于序列到序列&#xff08;Seq2Seq&#xff09;任务&#xff0c;如机器翻译、图像生成、文本生成等。随着深度学习的发展&#xff0c;编解码结构不断演变出多种模型变体…

扫描电镜的超低温冷冻制样及传输技术(Cryo-SEM)

扫描电镜的超低温冷冻制样及传输技术(Cryo-SEM) 扫描电镜&#xff08;Scanning Electron Microscope&#xff0c;简称SEM&#xff09;是一种利用聚焦电子束扫描样品表面&#xff0c;通过检测二次电子或反射电子等信号来获取样品表面形貌信息的显微观察技术&#xff1b;然而&…

JS手写:从0开始认识【柯里化】【支持占位符的柯里化】

柯里化 功能介绍 柯里化是拆分函数的一种手段&#xff0c;允许我们以偏函数的方式调用这个函数。 比如说&#xff0c;原来的函数A必须传入三个参数才能运行。经过柯里化处理之后的函数KA传入三个参数&#xff0c;能成功运行&#xff1b;传入两个参数也能&#xff0c;但是会返…

WebSocket 连接频繁断开的问题及解决方案

文章目录 WebSocket 连接频繁断开的问题及解决方案1. 引言2. 什么是 WebSocket&#xff1f;2.1 WebSocket 的优势2.2 WebSocket 的工作原理 3. WebSocket 连接频繁断开的常见原因3.1 服务器端问题3.1.1 服务器负载过高3.1.2 服务器配置不当3.1.3 超时设置 3.2 网络问题3.2.1 网…

openGauss开源数据库实战十二

文章目录 任务十二 openGauss逻辑结构:表管理任务目标实施步骤一、准备工作二、创建表1.新建表默认保存在public模式中2.在一个数据库的不同模式下创建表3.创建表的时候定义约束4.创建表时使用自增数据类型5.使用现有的表创建新表 三、查看表的信息1.在gsql中查看表的定义2.查看…

ADI仿真连接有效性检查方法

1、确认仿真器引脚接插OK. A、检查电脑正常连接 B、确认仿真器引脚定义匹配与上电正确连接 2、打开CCES&#xff0c;打开Debug Configurations 3、连接芯片类型选择 4、点击Configuratior… 5、选择Test…,在点Start&#xff0c;确认状态都OK&#xff0c;即可开始仿真调…

docker部署nginx+nacos+redis+java镜像和容器

nginx镜像制作 Dockerfile内容&#xff1a; # 基础镜像 FROM nginx # author MAINTAINER ruoyi# 挂载目录 VOLUME /home/ruoyi/projects/ruoyi-ui # 创建目录 RUN mkdir -p /home/ruoyi/projects/ruoyi-ui # 指定路径 WORKDIR /home/ruoyi/projects/ruoyi-ui # 复制conf文件到路…

SAP RFC 用户安全授权

一、SAP 通讯用户 对于RFC接口的用户&#xff0c;使用五种用户类型之一的“通讯”类型&#xff0c;这种类型的用户没有登陆SAPGUI的权限。 二、对调用的RFC授权 在通讯用户内部&#xff0c;权限对象&#xff1a;S_RFC中&#xff0c;限制进一步可以调用的RFC函数授权&#xff…

Uniapp的H5以及App不支持后端传FormData类型参数的解决方案

在uniapp中不支持FormData的传参&#xff0c;这就很恶心&#xff1b;如果强行传的话会提示&#xff0c;请求失败的报错信息。 因为后端必须要FormData类型的传参&#xff0c;所以在查阅一系列方案后&#xff0c;有一种解决办法可以完美解决。 代码&#xff1a; init() {const…

PyTorch 训练集、验证集、测试集、模型存档、正则化项

为什么要将数据集划分为三个部分&#xff1f;三个部分的作用&#xff1f;三个部分数据集的比例应如何设定&#xff1f; 另外一种常见的数据集划分方法是将数据集划分为两个部分&#xff08;训练集和测试集&#xff09;&#xff0c;这种划分方法存在的问题在于&#xff0c;模型…

Flask轻松上手:从零开始搭建属于你的Web应用

目录 一、准备工作 二、安装Flask 三、创建你的第一个Flask应用 创建一个新的Python文件 编写Flask应用代码 运行Flask应用 四、创建一个简单的博客系统 定义路由和文章列表 创建模板文件 运行并测试博客系统 五、使用数据库存储用户信息 安装Flask-SQLAlchemy 修…

游戏启动失败:8种修复xinput1_3.dll错误的几种方法教程,轻松解决xinput1_3.dll错误

当你准备好在一天的工作后放松一下&#xff0c;启动你最爱的游戏&#xff0c;却突然收到一个“xinput1_3.dll 丢失”的错误消息&#xff0c;这无疑是令人沮丧的。幸运的是&#xff0c;xinput1_3.dll丢失问题通常可以通过几个简单的步骤来解决。本文将详细介绍这些步骤&#xff…