在我看来,Linux是一个对软件开发非常友好的操作系统。它去除了很多windows下的复杂配置,保留了非常干净的系统。Mac系统也是与它有很多相似的地方,才这样好用。
以linux为内核的有Ubuntu,Debian、Centos,操作方式大同小异
因为linux是开源系统,所以在百度或者谷歌直接搜索ubuntu16.0,就能找到安装包。安装的时候找阿里镜像源,会下载的快一些。
清华大学镜像源网站:https://mirrors.tuna.tsinghua.edu.cn/
查看进程
ps aux
ps -elf
查看端口状态
lsof -i:端口号
##查看tcp udp端口和进程等情况
netstat -tunlp | grep 端口号
netstat -ntlp ## 查看当前所有tcp端口
netstat -ntulp | grep 80 ##查看所有80端口使用情况
netstat -l ##只显示监听端口
netstat -lt ## 只列出所有监听TCP端口
netstat -lu ## 只列出所有监听UDP端口
netstat -lx ## 只列出所有监听UNIX端口
netstat -pt ## 在netstat输出中显示PIC和进程名称
netstat -an | grep ':80' ##找出运行在指定端口的进程
服务器常用端口
21 ftp ftp服务器所开放的端口,用于上传下载
22 ssh 22端口就是ssh端口,用于通过命令行模式远程连接Linux系统的服务器
25 SMTP SMTP服务器所开放的端口,用于发送邮件
80 HTTP 用于网站服务例如IIS、Apache、Nginx等提供对外访问
113 POP3 110端口是为POP3服务开放的
143 IMAP 143端口主页用于Internet Message
443 HTTPS 网页浏览端口,能提供加密和通过安全端口传输的另一种HTTP
3306 MySQL 3306端口是MySQL数据库的默认端口,用于MySQL对外提供服务
8080 代理端口 8080端口同80端口,是被用于www代理服务的,可以实现网页浏览,经常在访问某个网站或使用代理服务器时会加上8080端口,此外Apache Tomcat web server默认服务端口就是8080
清除端口进程
kill [信号] PID//pid号
kill信号
kill -0:程序退出时收到该信息
kill -1:挂掉电话线或者终端连接的挂起信号,这个信号也会造成某些进程在没有终止的情况下重新初始化
kill -2:表示结束进程,但不是强制性的,常用的ctrl+c就是发出一个kill -2命令
kill -3:退出
kill -9:杀死进程,即强制结束进程,有可能会导致程序崩溃等
kill -11:段错误
kill -15:正常结束进程,是kill命令段默认信号
删除文件/文件夹
rm -f filename
rm -rf filename
set
set命令用于设置shell
关机/重启
## 立即关机
shutdown -h now
## 10分钟后关机
shutdown -h 10
## 立刻关机
power off
## 重启
reboot
## 重启
shutdown -r now
传输文件
## 从服务器上下载文件
scp username@servernama:/path/filename /var/www/local_dir
## 上传文件到服务器
scp /path/filename username@servernama:/path
## 下载目录
scp -r username@servernama:/path/ /var/www/local_dir
## 上传目录
scp -r /var/www/local_dir username@servernama:/path
修改文件
sed 's/properties/property/g' build.xml
## 批量替换
grep -ilr 'log(' *|xargs-|@ sed -i "'s/print(///Log(/g'@
##
sed -i "s/hello/hi/g" test.txt
## 删除行首空格
sed -i 's/^ //g'test
## 删除行尾空格
sed -i 's/$//g' test
## 替换当前目录中所有含有hello字符的文件中的hello为hi
sed -i "s/hello/hi/g" `grep "hello" -rl ./`
## 批量操作当前目录以m开头的文件
sed -i 's/foo/bar/g' ./m*
## 查找所有子目录中m开头的文件并进行替换
sed -i 's/foo/bar/g' `grep foo -rl --include="m*" ./`
历史上,linux的启动一直采用init进程
init进程有两个缺点:
启动时间长、启动脚本复杂
systemd就是为解决这个问题而生的,d是守护进程daemon的缩写。
systemd取代了initd,成为了系统的第一个进程(pid等于1),其他进程都是它的子进程
systemd的优点是功能强大,使用方便,缺点是体系庞大,非常复杂
systemd的常用命令
## 重启系统
sudo systemctl reboot
## 关闭系统,切断电源
sudo systemctl poweroff
## cpu停止工作
sudo systemctl halt
## 暂停系统
sudo systemctl suspend
## 让系统进入冬眠状态
sudo systemctl hibernate
## 让系统进入交互式休眠状态
sudo systemctl hybrid-sleep
## 启动救援状态
sudo systemctl rescue
查看本机信息
## 查看当前主机信息
hostnamectl
## 设置主机名
sudo hostnamectl set-hostname rhel7
## 查看本地化设置
localectl
## 设置本地化参数
sudo localectl set-locale LANG=en_GB.utf8
sudo lccalectl set-keymap en_GB
## 查看当前登陆的用户
loginctl list-users
## 列出当前session
loginctl list-sessions
## 列出显示指定用户的信息
loginctl show-user ruanyf
## 查看当前时区设置
timedatectl
## 显示所有可用的时区
timedatectl list-timezones
## 设置当前时区
sudo timedatectl set-timezone America/New_York
sudo timedatectl set-time YYYY-MM-DD
sudo timedatectl set-time HH:MM:SS
查看Unit信息
nohup命令
nohup命令用于在后台不挂断地运行命令,挂起进程,退出终端不会影响程序的运行
nohup命令在默认情况下,也就是非重定向时,会输出一个名叫nohup。out的文件到当前目录,如果当前目录到nohup。out文件不可写,输出到HOME/nohu。pout文件中
nohup ./nebula-httpd &
创建配置文件,后缀为service
[Unit]
Description=node simple server
[Service]
##启动命令
ExecStart=
Restart=always
User=nobody
Group=nobody
Environment=PATH=/usr/bin:/user/local/bin
Environment=NODE_ENV=production
WorkingDirectory=/tmp/node-systemd-demo
[Install]
WantedBy=multi-user.target
将配置文件拷贝到systemd之中
sudo cp node-server.service /etc/systemd/system
重载配置文件
sudo systemctl daemon-reload
free命令可以显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer。在Linux系统监控的工具中,free命令是最经常使用的命令之一
free 命令显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。共享内存将被忽略
-b 以Byte为单位显示内存使用情况。
-k 以KB为单位显示内存使用情况。
-m 以MB为单位显示内存使用情况。
-g 以GB为单位显示内存使用情况。
-o 不显示缓冲区调节列。
-s<间隔秒数> 持续观察内存使用状况。
-t 显示内存总和列。
-V 显示版本信息。
为了提高磁盘存取效率, Linux做了一些精心的设计, 除了对dentry进行缓存(用于VFS,加速文件路径名到inode的转换), 还采取了两种主要Cache方式:Buffer Cache和Page Cache。前者针对磁盘块的读写,后者针对文件inode的读写。这些Cache有效缩短了 I/O系统调用(比如read,write,getdents)的时间。
磁盘的操作有逻辑级(文件系统)和物理级(磁盘块),这两种Cache就是分别缓存逻辑和物理级数据的。
Wget是一个网络命令行工具,可以让你下载文件并与REST APIs互动。它支持HTTP
,HTTPS
,FTP
, 和FTPS
互联网协议。Wget可以处理不稳定和缓慢的网络连接。在下载失败的情况下,Wget会继续尝试,直到整个文件被检索出来。Wget还可以让你恢复被中断的文件下载,而不必从头开始。
你还可以使用Wget与REST APIs互动,而不需要安装任何额外的外部程序。你可以在终端中用单个或多个头文件提出GET
、POST
、PUT
、DELETE
、HTTP
等请求。
Wget可以对Restful API进行请求
wget -O- https://jsonplaceholder.typicode.com/posts?_limit=2
输入命令行后显示HTTP request sent, awaiting response... 200 OK
,这意味着你已经成功地向JSONPlaceholder发送了一个GET
请求。
Wget让你通过运行类似下面的命令来发送POST
wget --method=post -O- -q --body-data='{"title": "Wget POST","body": "Wget POST example body","userId":1}' --header=Content-Type:application/json https://jsonplaceholder.typicode.com/posts
上面的命令,用wget
,向JSON Placeholder发送一个POST
请求,以创建一个新帖子。你把method
设为post
,把Header
设为Content-Type:application/json
,并向其发送以下request body
:{"title": "Wget POST","body": "Wget POST example body","userId":1}
输出结果为
Output{
"title": "Wget POST",
"body": "Wget POST example body",
"userId": 1,
"id": 101
}
Wget让你通过运行类似下面的命令来发送PUT
wget --method=put -O- -q --body-data='{"title": "Wget PUT", "body": "Wget PUT example body", "userId": 1, "id":1}' --header=Content-Type:application/json https://jsonplaceholder.typicode.com/posts/1
在上面的命令中,你用wget
,向JSON Placeholder发送一个PUT
请求,以编辑这个REST API中的第一个帖子。你把method
设为put
,把Header
设为Content-Type:application/json
,并向其发送以下request body
:{"title": "Wget PUT", "body": "Wget PUT example body", "userId": 1, "id":1}
Output{
"body": "Wget PUT example body",
"title": "Wget PUT",
"userId": 1,
"id": 1
}
Wget让你通过运行一个类似下面的命令来发送DELETE
请求
wget --method=delete -O- -q --header=Content-Type:application/json https://jsonplaceholder.typicode.com/posts/1
用wget
,向JSON Placeholder发送一个DELETE
请求,删除这个REST API中的第一个帖子。你把method
设为delete
,并在URL中把你要删除的帖子设为1
环境变量配置错误造成的,输入
export PATH=/usr/local/sbin:usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
或者手动在/etc/profile中添加此行
普通用户可以用sudo
如果提示不再sudoers文件中,在sudoers文件中添加用户
vim /etc/sudoers
添加语句
username ALL=(ALL) ALL
切换到root用户
sudo su
linux最重要的用途还是服务器吧,目前绝大多数服务器都是linux系统。centos或者ubuntu、debian,在本地可以远程连接服务器进行操作
通过密码连接服务器
直接输入命令
ssh 用户名@IP地址 -p 端口号
运行后会要求输入密码,输入即可登录
通过密钥连接服务器
首先在服务器端创建密钥对,下载私钥
将私钥保存在.ssh文件下,如果没有.ssh目录,创建一个
cd ~
mkdir .ssh
修改密钥权限
cd ~/.ssh
chmod 400 密钥文件名
通过ssh密钥方式连接服务器
ssh -i ~/.ssh/mac root@192.168.0.1
~/.ssh/mac为下载的私钥的路径和文件名
root是服务器端管理员账号,一般是root
192.168.0.1是服务器的公网ip
终端变成root就说明连接成功
让mac终端始终保持与远程连接状态(Broken pipe)
sudo vim /etc/ssh/ssh_config
添加设置
# 断开时重试连接的次数
ServerAliveCountMax 5
# 每隔5s发送一个空请求以保持连接
ServerAliveInterval 5
启动终端:ctrl+alt+T
创建目录:mkdir
返回上层目录:cd ..
停止运行:Ctrl+c
关闭终端 Ctrl+alt+Q
新建终端 Ctrl+alt+N
for i in `seq 1 $(cat/proc/cpuinfo |grep "physical id" |wc -l)`;do dd if=/dev/zero of=/dev/null & done
查找操作系统的内核版本
uname -r
更新系统底层的库文件
yum update
vim命令
:w 保存文件但不退出vim
:w! 强制保存文件但不退出vim
:wq 保存文件并退出vim
:wq!强制保存文件并退出vim
:q 不保存文件直接退出
:q! 不保存文件强制退出vim
:e! 放弃所有修改,从上次保存文件开始再编辑命令历史
在对系统性能进行优化时,一般会使用top命令来查看系统负载和系统中各个进程的运行情况
$top
Iowait是CPU在等待磁盘I/O请求完成时处于空闲状态的时间百分比。
可以看出,如果系统处于iowait状态,必须满足两个条件:
1.系统中存在等待I/O请求完成的进程
2.系统当前正处于空闲状态,也就是没有可运行的进程
cpu 处于 iowait 状态时,仍然可以处理其他计算密集型任务。
iowait 高,反映有大量 cpu 空闲时间在等待 IO。
系统的 IO 瓶颈,需要结合其他工具 (比如 iostat
) 综合判断。
linux下应用程序的软件包按内容类别分为两类:
1.可执行文件(编译后的二进制软件包)
解压包之后就可以直接运行,类似于windows下的软件包,安装完可以直接使用,但是看不到源程序,而且下载时要注意这个软件是否是你所使用的平台,否则无法正常安装,如centos与ubuntu
优点:使用简单,只需要几个命令就能实现软件包的安装、卸载、升级、查询,安装速度快
缺点:不能看源代码,功能选择不如源代码灵活,依赖性
2.源程序(源码包)
解开包之后你还需要使用编译器将其编译为可执行文件,这是linux独有的,windows的思想是不开放源程序
优点:开源,可以自由选择所需功能,可看源码,卸载方便
缺点:安装步骤过多,编译时间过长
二进制软件包与源码包区别:
与直接从源代码安装相比,软件包管理易于安装和卸载,易于更新已安装的软件包,易于保护配置文件,易于跟踪已安装文件
通常用tar打包的都是源程序,用rpm、dpkg打包的则常是可执行程序,一般来说,自己动手打包源程序更具灵活性,但是容易遇到各种问题,而可执行程序包更容易安装,但是灵活性会差很多,所以一般一个软件会提供多种打包格式的安装程序。
linux下应用程序的软件包按格式分类:
linux下的软件安装包主要有rpm、deb、tar.gz三种格式
软件后缀为.rpm最初是Red Hat Linux提供的一种包封装格式,rpm较deb发行早,所以现在许多linux发行版本都使用。rpm包本质就是一个可以在特定机器上运行的Linux软件,可以在红帽Linux、Suse、Fedora直接进行安装,但在Ubuntu上无法识别
软件后缀为.deb是Debian linux提供的包封装格式。deb的包管理器dpkg只在debian上有,ubuntu也支持,可以在ubuntu上进行安装
软件后缀.tar.gz、tar.Z、tar.bz2、.tgz是使用unix系统打包工具tar打包的。tar包在所有Linux版本中都能运行,但是安装过程也最麻烦,tar包就是一个压缩包,是为了便于传输所产生的一种专门用于网络流通的文件格式,tar包与deb、rpm包相比,tar包不一定是软件,也可能是图片、文本等等
软件后缀为.bin的一般是一些商业软件
rpm包:
查询系统中所有的rpm包
rpm -qa
## 查询所有包含某个字符串sql的软件包
rpm -qa |grep sql
安装
rpm -i your-package.rpm
## 强制安装
rpm -i --force your-package.rpm
卸载(后缀不能包含rpm)
rpm -e your-package
升级软件包
rpm -Uvh your-package.rpm
安装rpm-build
yum list |grep rpm-build
yum install -y rpm-build.x86_64
tar包:
wget可以下载整个页面和文件
wget会遵守robots.txt文件。
wget -r -p -e robots=off http://www.example.com
准备编译环境
yum -y install gcc gcc-c++
获取源码并解压
wget https://github.com/Kitware/CMake/releases/download/3.15.5/cmake-3.15.5.tar.gz
## 备用下载地址 https://down.24kplus.com/linux/cmake/cmake-3.15.5.tar.gz
tar -zxf cmake-3.15.5.tar.gz
cd cmake-3.15.5
编译安装
./bootstrap --prefix=/usr --datadir=share/cmake --docdir=doc/cmake && make
sudo make install
验证安装
cmake --version
如果你想打包rpm包,可能还需要rpm-build包
sudo yum install rpm-build
rsync 是一个常用的 Linux 应用程序,用于文件同步
它可以在本地计算机与远程计算机之间,或者两个本地目录之间同步文件(但不支持两台远程计算机之间的同步)。它也可以当作文件复制工具,替代 cp
和 mv
命令
安装
# Debian
$ sudo apt-get install rsync
# Red Hat
$ sudo yum install rsync
# Arch Linux
$ sudo pacman -S rsync
注意,传输的双方都必须安装 rsync
安全增强型 Linux(SELinux)是一种采用安全架构的 Linux® 系统,它能够让管理员更好地管控哪些人可以访问系统。它最初是作为 Linux 内核的一系列补丁,由美国国家安全局(NSA)利用 Linux 安全模块(LSM)开发而成。
SELinux 于 2000 年发布到开源社区,并于 2003 年集成到上游 Linux 内核中。
SELinux 定义了每个人对系统上的应用、进程和文件的访问权限。它利用安全策略(一组告知 SELinux 哪些能访问,哪些不能访问的规则)来强制执行策略所允许的访问。
当应用或进程(称为主体)发出访问对象(如文件)的请求时,SELinux 会检查访问向量缓存(AVC),其中缓存有主体和对象的访问权限。
查看selinux状态
## 命令1
/usr/sbin/sestatus -v
## SELinux status: enabled
## 命令2
getenforce
临时关闭
setenforce 0 ##设置SELinux 成为permissive模式
##setenforce 1 设置SELinux 成为enforcing模式
也可以修改/etc/selinux/config 文件
将SELINUX=enforcing改为SELINUX=disabled
iptables 是一个配置 Linux 内核 防火墙 的命令行工具,是 netfilter 项目的一部分。 术语 iptables 也经常代指该内核级防火墙。 iptables 用于 ipv4,ip6tables 用于 ipv6。 需要root账户执行以下操作
开启iptables
echo 1 >/proc/sys/net/ipv4/ip_forward
默认值0是禁止ip转发,修改为1即开启ip转发功能。
简单转发
#-- 把访问本机 8091 端口的请求转发到 8090端口
$ iptables -t nat -A PREROUTING -p tcp --dport 8091 -j REDIRECT --to-ports 8090
#-- 把访问本机 8093 端口的请求转发到 192.168.1.3 的 8090端口
$ iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 8093 -j DNAT --to 192.168.1.3:8090
crontab可以在指定的时间执行一个shell脚本以及一系列Linux命令
常用于定时备份数据库、日志等
常用命令
crontab -e ##修改crontab文件,
crontab -l ##显示crontab文件
crontab -r ##删除crontab文件
crontab -ir ##删除crontab文件之前提醒用户
service crond status
service crond start
service crond stop
service crond restart
service crond reload
基本格式
* * * * * command
#分 时 日 月 周 + 命令
10 0 * * * command ./a.sh
## 每天0点10分执行命令
apache在linux下的文件是httpd,centos自带apache,文件目录为cd/etc/init.d
启动apache服务
service httpd start
service httpd restart
service httpd stop
Core 的意思是内存,Dump 的意思是扔出来,堆出来.
开发和使用 Unix 程序时,有时程序莫名其妙的 down 了,却没有任何的提示 (有时候会提示 core dumped). 这时候可以查看一下有没有形如 core. 进程号的文件生成,这个文件便是操作系统把程序 down 掉时的内存内容扔出来生成的,它可以做为调试程序的参考. core dump 又叫核心转储,当程序运行过程中发生异常,程序异常退出时,由操作系统把程序当前的内存状况存储在一个 core 文件中,叫 core dump.
gdb -c core 文件路径 [应用程序的路径] 进去后输入 where 回车,就可以显示程序在哪一行当掉的,在哪个函数中.
有时候程序 down 了,但是 core 文件却没有生成. core 文件的生成跟你当前系统的环境设置有关系,可以用下面的语句设置一下,然后再运行程序便成生成 core 文件. ulimit -c unlimited core 文件生成的位置一般于运行程序的路径相同,文件名一般为 core. 进程号
system limit for number of file watchers reached
文件监控数量超过了系统限制,直接修改系统参数
cat /proc/sys/fs/inotify/max_user_matches
##8192
sudo vim /etc/sysctl.conf
## 添加语句 fs.inotify.max_user_watches=524288
sudo sysctl -p
cat /proc/sys/fs/inotify/max_user_matches
##524288
运行命令
## 14.*
curl -sL https://rpm.nodesource.com/setup_14.x | bash -
## 12.*
curl -sL https://rpm.nodesource.com/setup_12.x | bash -
yum -y install nodejs
## 安装gcc插件
yum install gcc-c++ cmake
使用代理网址https://github.com.cnpmjs.org/
1.确认服务器的项目部署成功
2.确认访问地址是否存在。访问地址和端口是否正常。
3.确定服务器安全规则是否添加了要访问的端口。在控制台检查安全规则。
4.连接服务器的用户。一般服务器有root管理员,和其他个人创建用户。
5.服务器防火墙问题。服务器一般配置80端口为开放端口,在外网访问服务器80端口
使用telnet判断端口是否可以访问
telnet 47.49.182.93:7001
Docker作为容器管理的平台,早已在服务部署等领域有非常广泛的应用。容器是轻量级的虚拟化方案,依托于overlayfs、Linux下的namespace、cgroups等OS级别的虚拟化技术,性能相比于基于VM的虚拟化更加突出。
更重要的是,通过Docker安装和配置软件更加方便
移除可能有旧的Docker版本
yum erase -y docker docker-common docker-engine
安装工具包和依赖,设置仓库源
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
使用yum安装docker-ce
##最新稳定版
yum install docker-ce docker-ce-cli containerd.io
##指定版本
yum install docker-ce-18.09.6 docker-ce-cli-18.09.6 containerd.io
启动docker服务
systemctl start docker
检查docker的信息和版本
docker version
docker info
验证docker,通过下载镜像和创建容器来看看Docker是否可以运转起来。可以使用下面的命令从Docker的镜像仓库下载名为hello-world的镜像文件。
docker pull hello-world
docker安装容器
docker pull gitlab/gitlab-ce
如果docker拉取较慢更换docker源,docker默认为docker国内镜像,可以腾讯源、中科大源或者dcloud
启动容器
docker run
查看容器
一键安装脚本
bash <(curl -s -L https://git.io/v2ray.sh)
运行后自动安装,安装过程中:
输入1进行安装
选择tcp协议(默认)
选择端口号:为了不和别的软件冲突,推荐使用10000以上不超过65535的端口号,我选的10086
广告拦截:是否开启广告拦截,推荐不要开启,开启广告拦截会消耗服务器资源,且国外环境略由于国内环境
配置shadowsocks:选择开启,后面使用游戏加速器会用上
选择shadowsocks端口号:随意,不要和上面v2ray一样,我选2333
ss连接密码:123456
ss加密协议:选择默认
然后继续回车,直到安装完毕
开启BBR加速:google BBR是一款免费开源的TCP拥塞控制传输协议,可以使linux服务器显著提高吞吐量和减少TCP连接的延迟
修改系统变量
echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >>/etc/sysctl.conf
保存生效
sysctl -p
检查BBR是否开启
sysctl net.ipv4.tcp_available_congestion_control
返回变量==bbr则说明开启成功
检查BBR是否启动成功
lsmod | grep bbr
如果返回tcp_bar 20480说明启动成功
windows客户端使用v2rayN
在服务器端输入v2ray url,复制vmess链接
下载v2rayN软件,打开软件点击服务器,点击从剪贴板批量导入url
右键点击刚刚导入的服务器,测试服务器延迟,表示连接成功
在小图标点击右键,选择pcahttp代理模式,表示只有被墙的网站才会启用代理,全局模式是所有链接都走代理
mac端使用v2rayU
ios端使用shadowsocks扫描
Android端使用v2rayNG
在服务器端输入
v2ray qr
打开二维码链接,然后在手机上下载v2rayNG,打开客户端用扫一扫扫描二维码就能添加到节点
路由器端
在服务器段输入
v2ray url
复制链接,代开路由器端openwrt,勾选代理开关,点击服务器列表,在通过vmess链接添加节点处粘贴刚刚复制的链接
然后点击账号设置,代理模式选择gtwlist模式,服务器选择刚刚添加的服务器,点击提交就完成
frp是做内网穿透反向代理的软件
https://github.com/fatedier/frp/blob/dev/README_zh.md
通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:
frp 支持多种代理类型来适配不同的使用场景。
类型 | 描述 |
---|---|
tcp | 单纯的 TCP 端口映射,服务端会根据不同的端口路由到不同的内网服务。 |
udp | 单纯的 UDP 端口映射,服务端会根据不同的端口路由到不同的内网服务。 |
http | 针对 HTTP 应用定制了一些额外的功能,例如修改 Host Header,增加鉴权。 |
https | 针对 HTTPS 应用定制了一些额外的功能。 |
stcp | 安全的 TCP 内网代理,需要在被访问者和访问者的机器上都部署 frpc,不需要在服务端暴露端口。 |
sudp | 安全的 UDP 内网代理,需要在被访问者和访问者的机器上都部署 frpc,不需要在服务端暴露端口。 |
xtcp | 点对点内网穿透代理,功能同 stcp,但是流量不需要经过服务器中转。 |
tcpmux | 支持服务端 TCP 端口的多路复用,通过同一个端口访问不同的内网服务。 |