赞
踩
nginx+ssh实现内网穿透
在本地搭建的项目只能通过本地的server在本地的电脑上运行,那么怎么通过云服务器的ip端口让外界来访问呢。
需要准备的环境:
1.自己本地运行起来的项目(这里以vue项目为例:http://localhost:8082)
2.一台云服务器,阿里云,腾讯云等等。
3.云服务器上安装过nginx,如果nginx未安装,请自行百度安装一下,安装过程还是相对简单的。
4.域名(可以没有)
一、首先登录云服务器
ssh user@ip (user为云服务器用户名,ip为云服务公网ip)。
输入密码进入服务器目录。
二、进入到nginx的安装目录,我的nginx安装在了/usr/local/nginx目录下
cd /usr/local/nginx
执行命令ls查看nginx的目录,会有一个conf文件夹,cd conf进入到文件夹,执行ls查看文件夹目录。nginx.conf为nginx的默认配置文件。
三、我们在conf文件夹下执行命令mkdir defaultconf来创建一个defaultconf文件夹,此文件夹用来存放我们额外的nginx配置。cd defaultconf进入到这个文件夹。执行命令touch cross.conf,来创建我们自己的nginx配置文件。执行命令vi cross.conf,进入到文件的编译模式。按下键盘i键进入编辑模式,然后将下面代码贴入进去
server {
listen 8888; #这里监听的为后续访问的云服务器端口,可以设置为任意一个服务器上还不存在的端口号
server_name xx.xx.cn; # 这里填你的域名,如果没有域名则填localhost
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
proxy_pass http://localhost:8899;
# 这里的8899相当于一个标识,和后面在本地创建通道相关,可以任意设置一个值
}
}
到这里,按下键盘esc退出编辑模式,然后再输入:wq退出文件查看模式。
接下来 我们需要重启一下nginx,cd /usr/local/nginx/sbin,
执行./nginx -s reload。./nginx -t查看nginx启动状态。
接下来回到本地,在本地终端输入命令ssh -vnNt -R 8899:localhost:8082 user@ip
8899为我们nginx配置的标识,localhost:8082为我们本地项目的访问地址,user为云服务器用户名,ip为云服务器公网地址。回车输入云服务器登录密码就好了。最后几行为下面这样代表成功。
debug1: client_input_global_request: rtype hostkeys-00@openssh.com want_reply 0
debug1: remote forward success for: listen 8899, connect localhost:8082
debug1: All remote forwarding requests processed
四、接下来我们可以打开本地浏览器,输入自己的云服务器公网ip(如果有域名也可通过域名来访问)和端口来进行访问,例如http://xx.xx.xx.xx:8888。
如果出现Invalid Host header这样的字样,不要慌,是因为vue项目devserver导致的,我们只需要在devserver里面加一个disableHostCheck: true属性即可。
1.nginx的配置和安装目录可能会因为服务器环境和nginx的版本导致存在部分差异,但都大同小异,慢慢来,先确定nginx环境正常,再检查配置的穿透配置是否正确。
2.如果各个运行环境正常,第一次访问如果浏览器一直转圈的话,不要着急,耐心等一下。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。