Nginx中间件使用整理

nginx是一个高性能的HTTP反向代理服务器,(静态资源,服务转发)也是一个IMAP/POP3/SMTP服务器,最出名的就是反向代理,简答理解就是作用在服务器端,大概流程 客户端---->访问nginx的虚拟服务器---->找到真实的服务器---->在返回给客户端(是否还需要通过nginx待验证)

 

以鑫E家微信报价展示为例:(反向代理) 所有的客户端先访问到nginx 在通过nginx的配置转发到真实的服务器,因此作用于服务器端(此处用nginx是因为我们虚拟机是特别的局域网,外网需要访问需要使用特定的端口,当然我我们可以在外网发请求时候直接配置该端口,那么我们服务端就得改成此端口,端口又具有唯一性,其他服务就不能使用此端口,所以用ngin作用在虚拟机内统一使用8002端口代理任何服务)

背景:在外网(虚拟机)环境下开发前端vue项目,需发送请求到虚拟机内的服务端,此时可以用到nginx的反向代理,当然也是局限于特别的网段,特定的端口。同时 vue项目是基于node的,可以使用命令启动,不需要放在服务器才能访问。

 在服务端的IP下配置启动nginx来反向代理,也就是在服务端的同一个IP下,配置如下:

 

 

 

#user  nobody;# nginx的启动用户

 

worker_processes  1;

 

 #代表nginx的工作进程  nginx启动有两种进程  一种是主进程 master processes 一种就是worker                            processes, 这里配置1 代表操作系统启动1个工作进程 (默认启动一个主进程) 主进程是用来协调工作进程干活的 

 

#error_log  logs/error.log;

#error_log  logs/error.log  notice;

#error_log  logs/error.log  info;

 

#pid        logs/nginx.pid; #主进程的进程号文件

 

events {#工作模式

    worker_connections  1024; #单个工作进程的最大连接数目

}

 

http {

    include       mime.types;  #定义了所有的文件类型 比如 text/html 对应html htm , image/png 对应了png  , 代表了资源的媒体类型 当我们请求请求html的时候 nginx会在返回的头信息中加入Content_Type :text/html,告诉浏览器是什么类型文件,然后浏览器来选择操作。

 

    default_type  application/octet-stream;#默认的文件类型 浏览器会来下载该文件

    

     log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '

                      '"$request_body" $body_bytes_sent $status ';

                      '"$http_referer" "$http_user_agent" "$http_x_forwarded_for"';

    #日志文件的内容    $remote_addr代表客户端的ip地址,当通过了代理之后该 地址就变成了代理地址

                                 $remote_user 记录客户端认证的请求nginx的用户 如果没开启则没有 

                                 $time_local 记录时间时区

                                 $request 记录http请求

                                 $http_refer 记录请求是从哪个页面的链接过来 在www.baiducom 发起图片访问  就是百度

                                 $http_user_agent 代表浏览器的版本信息

                                  $http_x_forwarder_for 当我们通过代理的时候会记录该代理地址

                                  比如 客户端IP ->proxyIP1  就是变成 客户端IP+proxyIP1 以此类推

                

     sendfile        on;

      #sendfile 代表高效文件读取

   

     keepalive_timeout  65;

        #客户端服务端超时时间

    

    client_max_body_size 500m;  

   #此处只配置了一台真实的服务器(服务端项目所在),nginx默认是轮询的方式,Nginx可以配置代理多台服务器,当一台服务器宕机之后,仍能保持系统可用 ,当然还有其他的分配策略,可自行百度

    upstream serverProxy { 

    server 192.168.10.196:8080;

    }

#server 就是服务,这里其实是虚拟服务,listen就是虚拟服务的端口,server_name就是虚拟服务的访问路径, location / 就是请求的规则路径,默认回到根目录的默认页面,就是我们访问localhost:9999的是时候会访问

#root下的index.html ,当我们访问localhost:9999/weixin/时候,也就是当我们在某页面请求localhost:9999/weiixn/xxx.do的时候会被转发到serverProxy(192.168.10.196:8080/weixin/xxx.do

    server {

        listen       9999;

        server_name  localhost;

        access_log  logs/host.access.log main;

        location / {

            root   D:/vueWorkSpace2/mint-ui-example/dist;

            index  index.html;

        }

        

    #反向代理/mobile/下的.do请求到远程服务器==》192.12.35.192:8008张成轩

          location /weixin/ {

              proxy_pass http://serverProxy/weixin/;

            proxy_redirect          off; //重定向代理 参考https://www.cnblogs.com/fanzhidongyzby/p/5194895.html

        }

      

        error_page   500 502 503 504  /50x.html;

        location = /50x.html {

            root   html;

        }

    }

    

    #本地.do模拟数据服务,

    #当上边的反向代理地址为http://localProxy/;时会走这里

    server {

        listen       9224;

        server_name  dataServer;

        access_log  logs/data.access.log main;

        #nginx默认不可以post取静态文件,会返回405状态

        #此处修改post请求.json(.do)的响应状态为200

        #以json形式返回

        location ~ (.*\.json) {

            root  D:/vx/VX-NJYH/sample/data/;

            default_type application/json;    

            error_page 405 =200 $1;

        }

    }

}

 

 

你可能感兴趣的:(中台,nginx)