HOME 首页
SERVICE 服务产品
XINMEITI 新媒体代运营
CASE 服务案例
NEWS 热点资讯
ABOUT 关于我们
CONTACT 联系我们
创意岭
让品牌有温度、有情感
专注品牌策划15年

    nginx实现内网穿透

    发布时间:2023-03-12 20:20:01     稿源: 创意岭    阅读: 122        问大家

    大家好!今天让创意岭的小编来大家介绍下关于nginx实现内网穿透的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。

    ChatGPT国内免费在线使用,一键生成原创文章、方案、文案、工作计划、工作报告、论文、代码、作文、做题和对话答疑等等

    只需要输入关键词,就能返回你想要的内容,越精准,写出的就越详细,有微信小程序端、在线网页版、PC客户端

    官网:https://ai.de1919.com

    本文目录:

    nginx实现内网穿透

    一、在腾讯DNSPod申请的域名被谷歌识别为诈骗网站如何处理?

    还是要检查网站程序是否被植入隐藏代码非法信息,如有需要先删除。

    二、通过nginx实现智能家居自动内外网切换

    搞了HomeAssistant的外网访问后,内外网访问需要不同的地址,导致一些不必要的麻烦。通过host+nginx配置可以实现同一个域名内网下访问内网ip,外网访问外网ip

    三、nginx自动添加内网端口

    1.内网nginx服务器提供web的端口为8080;

    2.通过路由的转换,将8080端口映射为外网的80端口( www.test.com );

    3.访问二级目录 www.test.com/test ,此时nginx会出现访问出错,并自动更改端口为内网的8080,即 www.test.com:8080/test/ ;

    4.排除了nginx自动添加斜杠的问题,因为nginx从0.8.48这个版本后就已经设置为自动添加了,即

    通过端口映射时,nginx会自动添加内网端口,修改路径导致路径访问出错;

    在server里面加入

    四、Linux命令

    快照功能:记录当前的硬盘的状态。刚建快照时快照占用内存为0,标记了当前硬盘的存储状态。当虚拟机对快照标记的内容改写时,会将改写的内容存储进快照,与未改写的部分整合得到完整的快照。当快照标记的部分被完全改写,那么快照存储空间完整记录了当时拍摄时的内存状态。

    参数形式

    第一种:参数用一横的说明后面的参数是字符形式。

    第二种:参数用两横的说明后面的参数是单词形式。

    第三种:参数前有横的是 System V风格。

    第四种:参数前没有横的是 BSD风格。

    cat、more、less、head、tail命令的比较:

    cat命令可以一次显示整个文件,如果文件比较大,使用不是很方便;

    more命令可以让屏幕在显示满一屏幕时暂停,按空格往前翻页,按b往后翻页。

    less命令也可以分页显示文件,和more命令的区别就在于: 支持上下键卷动屏幕、查找;不需要在一开始就读取整个文件,打开大文件时比more、vim更快。

    head命令用于查看文件的前n行。

    tail命令用于查看文件的后n行,加上-f命令,查看在线日志非常方便,可以打印最新增加的日志。

    一般模式:

    编辑模式:

    命令模式:

    编码

    多行操作(列编辑模式)

    插入:ctrl+v进入列编辑模式,上下移动光标选择需要插入的位置,然后输入大写I,输入需要文本,最后按esc键退出,就会发现文本会在选择的多行中插入。

    删除:ctrl+v进入列编辑模式,上下移动光标选中需要删除的部分,然后按d,就会删除选中的内容。

    ①head:显示文件头部内容

    ②tail:输出文件尾部内容

    注意:用vim和vi修改内容会删除源文件并生成新文件,所以tail -f会失效。需要用到

    追加和覆盖语句(>或>>),才能被tail -f监视到。

    一般用于查看小文件

    查看压缩文件中的文本内容

    例:

    ①more:文件内容分屏查看器

    ②less:分屏显示文件内容,效率比more高

    1、简单读取

    运行脚本如下

    测试结果为:

    2、-p 参数,允许在 read 命令行中直接指定一个提示。

    运行脚本如下

    测试结果为:

    echo [选项] [输出内容] (输出内容到控制台)

    输出给定文本的sha256加密后的内容

    ①显示当前时间信息

    ②显示当前时间年月日

    ③显示当前时间年月日时分秒

    ④显示昨天

    ⑤显示明天时间

    ⑥显示上个月时间

    需要注意的是取下个月的命令存在bug,执行如下命令会得到21-10,但是正常应该得到21-09,需要注意

    date -d "2021-08-31 +1 month" +%y-%m

    ⑦修改系统时间

    ⑧获取当前时间戳

    获取秒时间戳: date +%s

    获取毫秒时间戳:$[ (date +%s%N) /1000000]

    查看日历

    (1)查看当前月的日历

    (2)查看2017年的日历

    例:

    对比gzip/gunzip,zip/unzip可以压缩文件和目录且保留源文件。

    ①zip:压缩

    ②unzip:解压缩

    只能压缩文件不能压缩目录,不保留原来的文件。

    gzip 文件 (只能将文件压缩为*.gz文件)

    gunzip 文件.gz (解压缩文件命令)

    例: crontab -e

    (1)进入crontab编辑界面。会打开vim编辑你的工作。

    (2)每隔1分钟,向/root/bailongma.txt文件中添加一个11的数字

    */1 * * * * /bin/echo ”11” >> /root/bailongma.txt

    (3)可以用tail -f 目标文件来实施监控追加的内容

    查看日志

    可以用tail -f /var/log/cron.log观察

    Cron表达式见文章: https://www.jianshu.com/writer#/notebooks/46619194/notes/75177408

    ls [选项] [目录或是文件]

    cd [参数]

    例: cd -P $(dirname $p1) ; pwd 先跳转到文件的所在目录,再打印$p1文件的实际路径

    概述

    ①cp(copy):只能在本机中复制

    ②scp(secure copy):可以复制文件给远程主机

    scp -r test.sh hxr@hadoop102:/root

    ③rsync(remote sync):功能与scp相同,但是不会改文件属性

    rsync -av test.sh test.sh hxr@hadoop102:/root

    ④nc(netcat):监听端口,可以实现机器之间传输文件。

    nc -lk 7777 (-l表示listen,-k表示keep)

    强制覆盖不提示的方法:cp

    例:scp -r test.sh hxr@bigdata1:/root

    例:rsync -av test.sh hxr@bigdata1:/root

    例:

    nc -lp 10000 > nc_test.txt

    nc -w 1 hadoop102 < nc_test.txt

    远程登录时默认使用的私钥为~/.ssh/id_rsa

    生成密钥对

    将公钥发送到本机

    将密钥发送到需要登录到本机的服务器上

    修改密钥的权限

    远程登陆

    如果有多个节点需要远程登陆,可以在.ssh下创建config并输入

    再次登陆

    ①正向代理:

    ②反向代理:

    所谓“反向代理”就是让远端启动端口,把远端端口数据转发到本地。

    HostA 将自己可以访问的 HostB:PortB 暴露给外网服务器 HostC:PortC,在 HostA 上运行:

    那么链接 HostC:PortC 就相当于链接 HostB:PortB。

    使用时需修改 HostC 的 /etc/ssh/sshd_config 的一条配置如下,不然启动的进程监听的ip地址为127.0.0.1,即只有本机可以访问该端口。

    相当于内网穿透,比如 HostA 和 HostB 是同一个内网下的两台可以互相访问的机器,HostC是外网跳板机,HostC不能访问 HostA,但是 HostA 可以访问 HostC。

    那么通过在内网 HostA 上运行 ssh -R 告诉 HostC,创建 PortC 端口监听,把该端口所有数据转发给我(HostA),我会再转发给同一个内网下的 HostB:PortB。

    同内网下的 HostA/HostB 也可以是同一台机器,换句话说就是 内网 HostA 把自己可以访问的端口暴露给了外网 HostC。

    例: 比如在我的内网机192.168.32.244上有一个RabbitMQ的客户端,端口号为15672。现在我希望在外网上访问固定ip的云服务器chenjie.asia的6009端口,通过跳板机192.168.32.243来转发请求到192.168.32.244:15672,从而实现在外网访问内网服务的功能,即内网穿透。

    ①在192.168.32.244上启动RabbitMQ服务

    ②将chenjie.asia云服务器的私钥复制到跳板机192.168.32.243的~/.ssh下,并重命名为id_rsa。通过如下命令看是否可以远程登陆到云服务,可以登陆则进行下一步。

    ③修改chenjie.asia服务器的ssh配置文件 /etc/ssh/sshd_config ,允许其他节点访问

    然后重启sshd服务

    ④在跳板机192.168.32.243启动ssh反向代理

    这个进程在关闭session时会停止,可以添加启动参数 -CPfN

    例:

    以 root 身份执行的程序有了所有特权,这会带来安全风险。Kernel 从 2.2 版本开始,提供了 Capabilities 功能,它把特权划分成不同单元,可以只授权程序所需的权限,而非所有特权。

    例如:linux不允许非root账号只用1024以下的端口,使用root启动命令nginx,会导致nginx权限过高太危险。所以用setcap命令

    sudo setcap cap_net_bind_service=+eip /bigdata/nginx/sbin/nginx

    正确的关机流程为 :sync > shutdown > reboot > halt

    (1)sync (功能描述:将数据由内存同步到硬盘中)

    (2)halt (功能描述:关闭系统,等同于shutdown -h now 和 poweroff)

    (3)reboot (功能描述:就是重启,等同于 shutdown -r now)

    (4)shutdown [选项] [时间]

    安装

    yum install -y telnet-server telnet

    ls -i 显示文件的节点号

    find -inum 节点号 -delete 删除指定的节点即可删除对应的文件

    启动一个服务: systemctl start postfix.service

    关闭一个服务: systemctl stop postfix.service

    重启一个服务: systemctl restart postfix.service

    显示一个服务的状态: systemctl status postfix.service

    在开机时启用一个服务: systemctl enable postfix.service

    在开机时禁用一个服务: systemctl disable postfix.service

    注:在enable的时候会打印出来该启动文件的位置

    列出所有已经安装的服务及状态:

    systemctl list-units

    systemctl list-unit-files

    查看服务列表状态:

    systemctl list-units --type=service

    查看服务是否开机启动: systemctl is-enabled postfix.service

    查看已启动的服务列表: systemctl list-unit-files | grep enabled

    查看启动失败的服务列表: systemctl --failed

    查看服务日志: journalctl -u postfix -n 10 -f

    命令类似systemctl,用于操作native service。

    添加脚本为服务(需要指定启动级别和优先级): chkconfig --add [脚本]

    删除服务: chkconfig --del [脚本]

    单独查看某一服务是否开机启动的命令 : chkconfig --list [服务名]

    单独开启某一服务的命令 : chkconfig [服务名] on

    单独关闭某一服务的命令: chkconfig [服务名] off

    查看某一服务的状态: /etc/intd.d/[服务名] status

    启用服务就是在当前"runlevel"的配置文件目录 /etc/systemd/system/multi-user.target.wants 里,建立 /usr/lib/systemd/system 里面对应服务配置文件的软链接;禁用服务就是删除此软链接,添加服务就是添加软连接。

    su 用户名称 (切换用户,只能获得用户的执行权限,不能获得环境变量)

    su - 用户名称 (切换到用户并获得该用户的环境变量及执行权限)

    echo $PATH 打印环境变量

    设置普通用户具有root权限

    修改 /etc/sudoers 文件,找到下面一行(91行),在root下面添加一行,如下 所示:

    或者配置成采用sudo命令时,不需要输入密码

    修改完毕,现在可以用hxr 帐号登录,然后用命令 sudo ,即可获得root权限进行操作。

    以azkaban用户执行引号中的命令

    gpasswd -d [username] [groupname] 将用户从组中删除

    gpasswd -a [username] [groupname] 将用户加入到组中

    用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对 /etc/group文件的更新。

    0首位表示类型 - 代表文件 d 代表目录 l 链接文档(link file)

    三种特殊权限suid、sgid、sticky

    例子:

    变更文件权限方式一

    例:chmod u-x,o+x houge.txt

    变更文件权限方式二

    例:chmod -R 777 /mnt/ 修改整个文件夹的文件权限

    在linux中创建文件或者目录会有一个默认权限的,这个默认权限是由umask决定的(默认为0022)。umask设置的是权限的“补码”,而我们常用chmod设置的是文件权限码。一般在/etc/profile 、~/.bashprofile 或者 ~/.profile中设置umask值。

    umask计算

    如root用户的默认umask为0022(第一个0 代表特殊权限位,这里先不考虑),创建的文件默认权限是644(即默认666掩上umask的022),创建的目录是755(即默认777掩上umask的022)。

    对于root用户的umask=022这个来说,777权限二进制码就是(111)(111)(111),022权限二进制码为(000)(010)(010)。

    上面就是一个umask的正常计算过程,但是这样实在是太麻烦了。我们使用如下的简单的方法快速计算。

    上面的这个方法计算是非常方便的, 为何得到奇数要+1呢?

    文件的最大权限是666,都是偶数,你得到奇数,说明你的umask有奇数啊,读为4,写为2,都是偶数,说明你有执行权限的。

    就按照上面的umask=023为例,在计算其他用户权限的时候6-3=3 ,6是读写,3是写和执行,其实应该是读写权限减去读权限的得到写权限的,相当于我们多减去了一个执行权限。所以结果加1。

    umask修改

    如果想单独修改某个文件夹的新建文件的权限,可以使用setfacl命令。

    例:递归改变文件所有者和所有组 chown -R hxr:hxr /mnt

    例:

    以上就是关于nginx实现内网穿透相关问题的回答。希望能帮到你,如有更多相关问题,您也可以联系我们的客服进行咨询,客服也会为您讲解更多精彩的知识和内容。


    推荐阅读:

    bing的安全搜索无法关闭(bing的安全搜索筛选器在哪)

    关于chatGPT的英文文章(关于cheating的英语作文)

    新版bing(新版bing怎么申请)

    好看的图案手绘(卡通图片可爱呆萌)

    直播电商卖什么最好(直播电商卖什么最好卖)