Docker

Docker - Nginx 相关配置

环境需求

安装Nginx:https://www.cnblogs.com/1285026182YUAN/p/11808839.html

 

发布两个WebApi项目:

参考:https://www.cnblogs.com/1285026182YUAN/p/11801392.html

 

 两个项目的接口地址分别为:

http://192.168.122.199:8091/api/values

http://192.168.122.199:8092/api/values

  

一、反向代理

反向代理和正向代理的区别就是:正向代理代理客户端,反向代理代理服务器。

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

  下面我们通过两张图来对比正向代理和方向代理:

  理解这两种代理的关键在于代理服务器所代理的对象是什么,正向代理代理的是客户端,我们需要在客户端进行一些代理的设置。而反向代理代理的是服务器,作为客户端的我们是无法感知到服务器的真实存在的。

  总结起来还是一句话:正向代理代理客户端,反向代理代理服务器。

1. 修改nginx配置文件

路径:/nginx/conf/nginx.conf

增加红色内容

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       /etc/nginx/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  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;
    #gzip  on;
    include /etc/nginx/conf.d/*.conf;
 
     server {
         listen       80;
         charset utf-8; 
         server_name  192.168.122.199;# 服务器地址或绑定域名

         location / {# 访问80端口后的所有路径都转发到 proxy_pass 配置的ip中
             proxy_pass http://192.168.122.199:8091;# 配置反向代理的ip地址和端口号 【注:url地址需加上http:// 或 https://】
            proxy_redirect default;
         }
     }
 
}

也就是说 当我需要访问 192.168.122.199:8091 上的方法

可以直接访问 192.168.122.199:8082(8082为nginx的端口号)带方法名就可以了。

二、负载均衡

 1. 修改nginx配置文件 

user  nginx;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/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  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;



    upstream testapi {
        server 192.168.122.199:8091 weight=1;
        server 192.168.122.199:8092 weight=2;
    }

     server {
         listen       80;
        server_name  192.168.122.199;

         location / {
           proxy_pass http://testapi;
           proxy_set_header   Host             $host; 
           proxy_set_header   X-Real-IP        $remote_addr; 
           proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for; 
         }
     }
} 
weight代表权重,权重越大,分配的请求压力越大

2. 访问 nginx 的地址: http://192.168.122.199:8082/api/values

不断刷新,发现 两个服务地址是按权重访问的,访问次数1:2

 

引用:https://www.cnblogs.com/ysocean/p/9392908.html

引用:https://www.cnblogs.com/zhengqing/p/11256417.html

原文地址:https://www.cnblogs.com/1285026182YUAN/p/13141721.html