Nginx反向代理

402 阅读1分钟

反向代理

在介绍反向代理之前,先来了解一下正向代理。

  • 正向代理:如果把局域网外的 Internet 想象成一个巨大的资源库,则局域网中的客户端要访问 Internet,则需要通过代理服务器来访问,这种代理服务就称为正向代理。

  • 反向代理:看下面原理图,就一目了然。其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器 IP 地址。 A093A5DE-65F0-4579-A342-FAE79B322EFD.png

例子主要实现了对应的接口转发到对应的服务器

nginx配置


#user  nobody;
worker_processes  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;
    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;

    # 开发
    upstream qihong_pool{
        server 127.0.0.1:80;
    }

    # 测试
    upstream backend_cf_pool{
        server 127.0.0.1:9090;
    }

    server {

	    # 监听端口

	    listen       8080;

	    # 域名设定,可以有多个

	    server_name  localhost;
	    
	    #将所有请求转发给qihong_pool池的应用处理
		location ~ (/cb/ali/onOssPutImg$)|(/blur/getStorageConfig$) {
			proxy_pass http://qihong_pool;
		}

	    location / {

		    proxy_pass http://backend_cf_pool;

		    # 定义路径下默认访问的文件名

		    index index.html;

		    # 打开目录浏览功能,可以列出整个目录

		    # autoindex on;

	    }
	}

	# 测试服务
    server {

	    # 监听端口

	    listen       9090;

	    # 域名设定,可以有多个

	    server_name  localhost;

	    root /Users/xj_mac/Documents/docker/nginx/; # 该项要修改为你准备存放相关网页的路径

	    location / {

	    # 定义路径下默认访问的文件名

	    index index.html;

	    # 打开目录浏览功能,可以列出整个目录

	    # autoindex on;

	    }
	}

    # HTTPS server
    #
    #server {
    #    listen       443 ssl;
    #    server_name  localhost;

    #    ssl_certificate      cert.pem;
    #    ssl_certificate_key  cert.key;

    #    ssl_session_cache    shared:SSL:1m;
    #    ssl_session_timeout  5m;

    #    ssl_ciphers  HIGH:!aNULL:!MD5;
    #    ssl_prefer_server_ciphers  on;

    #    location / {
    #        root   html;
    #        index  index.html index.htm;
    #    }
    #}
    include servers/*;
}

rtmp {
    server {
     listen 1935;
     application zbcs {
        live on;
        record off;
     }
   }
}