Nginx和内网穿透

本文将要了解Nginx是什么?内网穿透是什么?通过Nginx处理http请求,搭建静态网站,通过内网穿透外部访问该静态网站。

Nginx

Nginx (engine x) 是一个高性能的HTTP 和反向代理 的web服务器,同时也提供了IMAP/POP3/SMTP服务。

而且支持热部署,几乎可以做到 7 * 24 小时不间断运行,即使运行几个月也不需要重新启动,还能在不间断服务的情况下对软件版本进行热更新。性能是 Nginx 最重要的考量,其占用内存少 、并发能力强 、能支持高达 5w 个并发连接数,最重要的是,Nginx  是免费 的并可以商业化,配置使用也比较简单。

1.安装

百度搜索nginx或者打开https://nginx.org/en/download.html

下载windows稳定版的,得到zip压缩包,解压到本地目录,得到如下

1.1如何启动?

很简单

(1)双击nginx.exe 文件,出现黑框一闪而过,表示已启动成功

(2)在当前目录打开cmd 输入 nginx.exe 回车  然后运行成功,可以关闭cmd窗口

问题:

启动多次会有什么情况?  会有多个nginx启动,可以使用 tasklist /fi "imagename eq nginx.exe"   查看 。tasklist  是windows的进程管理命令,详细可以百度查看。

1.2 如何退出

(1)打开任务管理器,找到 nginx进程 选择结束任务即可。

(2)使用命令 nginx -s stop  或者 nginx -s quit  ,仅限有一个nginx进程的情况

(3)使用tasklist命令 taskkill /f /t /im nginx.exe  ,可以结束多个 nginx进程

问题:

你知道 nginx -s stop为什么打开cmd输入就会说命令不存在吗?答: 需要将cmd的目录切换到含有nginx.exe文件的文件夹。或者在 nginx.exe的文件夹打开cmd哦。方便省事的方式是将含nginx.exe的目录添加到 全局环境变量  喔

 

启动完成后 打开浏览器  输入 127.0.0.1  就进入了默认页面 。

2.使用

刚刚打开这一页面发生了什么?用户发了一个http请求,被nginx接收和处理 ,怎么处理?是nginx依照自己的配置文件 来进行处理。然后进行相应的服务分发 等

我们进入127.0.0.1 依据配置文件 访问了默认目录

我们来看看配置文件是怎么写的

配置文件

文件在 你解压目录下的 /conf/nginx.conf

打开如下(截取部分)

events {
    worker_connections  1024; # 进程最大并发数
}


http { # http服务
    include       mime.types;
    default_type  application/octet-stream;

    #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  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server { # 服务
        listen       80; # 监听端口
        server_name  localhost; # 域名 默认本地

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / { # 访问的路径  / 代表根目录
            root   html; # 网站根目录
            index  index.html index.htm; # 默认首页文件
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #    deny  all;
        #}
    }

层级:

在第一个server 中

listen 80;
server_name localhost;

# 表示监听 localhost:80 的http请求   即 127.0.0.1:80

location / {
root html;
index index.html index.htm;
}

# 当你访问127.0.0.1:80 时 请求到 解压缩目录下/html  目录,有index.html文件 则访问index.html文件

我们修改它的index.html 文件,然后访问

nginx功能强大,支持反向代理 ,负载均衡 ,流量分发 等等

有很多配置都没讲到,更加深入的学习,就需要自己去探索它的原理,去寻找书籍教程等。

 

 

内网穿透

内网穿透也叫NAT穿透 ,用户在外网访问内部网络是 访问不通的,因为数据被阻止进来,如果你具有公网ip,即可转换到内网。

但是运营商有公网,我相当于是运营商内部局域网,它的公网为什么不会转发流量到我这?这些下一篇讲解原理。

总的说:比如你访问一个网站,网站被解析成ip(这个ip就是公网ip),访问ip就能访问到具体服务,这个服务是通过NAT端口映射 到具体提供服务的主机 。

我们在NAT转换过程被阻止,就造成访问不了了。

所有内网穿透就是打通 NAT这条路。

具体就是 内网的主机 和 运行穿透服务的服务器  建立连接(运行穿透服务的服务器具备公网ip),进行端口映射。

 

内网穿透方式很多 比如nps   frp  ngrok  sunny-ngrok 等

本次使用ngrok来进行内网穿透

1.安装ngrok

打开官网 https://ngrok.com/

注册登录  然后下载windows版的程序 或者 下载我下载好的 蓝奏云

 

解压出来,得到一个ngrok.exe 文件,在该文件的当前目录 打开cmd

执行,该命令取决于 你的用户界面怎么显示 如下图:

ngrok authtoken 22M1g6xxxxkQcb6Ag3xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

 

然后执行

ngrok http 80

运行完成如下图:

外网访问  图中红框 的地址   即 访问了本地的127.0.0.1:80  即实现了内网穿透。

版权声明:
作者:乘风归去
链接:https://www.lightr.cn/archives/1349.html
来源:乘风小栈
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
< <上一篇
下一篇>>
文章目录
关闭
目 录