欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Nginx反向代理配置

程序员文章站 2022-07-12 19:19:05
...

Nginx反向代理配置


前言

README.md

本文档介绍 nginx 反向代理, nginx 作为 web服务器 一个重要的功能就是反向代理。

 

关于代理服务器

代理服务器,客户机在发送请求时,不会直接发送给目的主机,而是先发送给代理服务器,代理服务接受客户机请求之后,再向主机发出,并接收目的主机返回的数据,存放在代理服务器的硬盘中,再发送给客户机。

 

关于反向代理

反向代理方式是指以代理服务器来接受 Internet 上的连接请求,然后将请求转发给内部网络上的服务器;并将从服务器上得到的结果返回给 Internet 上请求连接的客户端,此时代理服务器对外就表现为一个服务器。

正向代理和反向代理如下:

Nginx反向代理配置

 

准备

在上面的介绍中中我们已经对 nginx 反向代理有了一定的认识,接下来我们会一起配置一个较为完善的代理,在实现的过程中,我们逐步完成以下内容:

  1. Nginx 安装
  2. Nginx 配置
  3. SwitchHost 配置
  4. 项目运行

 

开始

配置代理流程

Nginx下载

首先,Nginx 官网下载地址https://nginx.org/en/download.html ,下载后解压,启动方式为:

  • 双击目录下“ nginx.exe ”,即可启动nginx服务器;
  • 命令行进入该文件夹,执行 start nginx 命令,也可启动 nginx 服务器;

打开浏览器,输入地址:http://localhost,访问页面,出现" welcome to nginx! "页面,表示安装成功。

 

Nginx配置

下载安装好后,打开 conf 文件夹下的 nginx.conf 文件,nginx 的基础配置存放在此;


Nginx文件结构:

worker_processes 1;                 #全局块
events {                            #events块
    worker_connections  512;     
}
http {                              #http块
    server {                        #server块
        listen       4545;  
        server_name  127.0.0.1;        
        location ^~ /filename/ {   #location块
              root   /var/www;
              index  index.html;
        }      
        location / {
              proxy_pass      http://127.0.0.1:8000;
        }
    }
} 

全局块:配置影响 nginx 全局的指令。一般有运行 nginx 服务器的用户组,nginx进程 pid 存放路径,日志存放路径,配置文件引入,允许生成 worker process 数等;

其中,worker_processes:允许生成的进程数,默认为1;

 

events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。

其中,worker_connections:最大连接数,默认为512;

 

server块:配置虚拟主机的相关参数,一个 http 中可以有多个 server 。

其中, listen:监听端口;       server_name: 监听地址;

 

location块:配置请求的路由,以及各种页面的处理情况。

其中,proxy_pass http://127.0.0.1:8000 :用来转发动态请求到后端应用服务器(非静态文件请求就默认是动态请求);

location ^~ /filename/ {
      root     /var/www; 

是处理静态文件请求,这是 nginx 作为 http服务器 的强项,有两种配置模式,目录匹配或后缀匹配;


下面是一个完整的配置实例:

worker_processes  1;   
events {
    worker_connections  1024;              
}
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;             

    keepalive_timeout  65;           
    server {
        listen 80;
        server_name xx.xxx.com;
        location ^~ /aaa/ {
              root        /sss/ddd/fff/ggg/hhh;
              index index.html;
          }

        location ^~ /bbb/ {
              root        /sss/ddd/fff/ggg/hhh;   
              index index.html;
          }

        location ~ ^/tools/(.*)$  {
              alias       /sss/ddd/filename/$1;
              index index.html;
          }  
        location ^~ /filename/ {
              root        /sss/ddd;
              index index.html;
         }      
        location / {
            proxy_pass      http://127.0.0.1:8000;
        }
    }
}

SwitchHost配置

SwitchHosts! 是一个管理、切换多个 hosts 方案的工具。

它是一个免费开源软件。日常开发工作中,我们可能经常需要切换各种 hosts 绑定,比如在本地开发时可能需要一个开发环境的 hosts 绑定方案,发布到测试环境后又有一个测试环境的 hosts 绑定方案,然后可能还有一个预发布环境,最后可能才是真实的线上环境。本地开发过程中,还可能有多组不同的 hosts 需要绑定。

首先,安装 SwitchHost , 点我下载 ,
安装完成后,以管理员身份运行:

Nginx反向代理配置
 

进行相应的 host 配置;

项目运行

本文档示例 react 项目本地运行

完成以上配置后,打开 git clone 的 react 项目所在目录,命令行执行 npm i 安装 node_modules,安装完成后执行 npm start ,项目运行成功。