nginx的使用、静态文件服务器,SSL终端代理,反向代理,负载均衡

Nginx是一款开源的高性能Web服务器,也可以用来作为反向代理、负载均衡器和HTTP缓存等。

静态文件服务器

以下是简单的Nginx静态文件服务器配置示例:

server {
    listen 80;
    server_name localhost;

    # 配置默认请求的首页
    index index.html index.htm;

    # 设置静态文件根目录
    root /var/www/;

    # 添加缓存控制
    location ~* \.(jpg|jpeg|gif|png|ico|css|js)$ {
        expires 1y;
        add_header Cache-Control "public";
    }

    # 防止目录遍历漏洞
    location ~ /\. {
        deny all;
    }
}

这个配置文件假定你的网站根目录为 /var/www/。你需要将 server_name 替换为你实际的域名,以及调整其他设置来符合你的需求。也可以根据需要添加其他的 location 块或调整缓存控制设置。

SSL终端代理

以下是一个简单的 Nginx SSL 终端代理的配置示例:

 server {
        #SSL 访问端口号为 443
        listen 443 ssl; 
        #填写绑定证书的域名
        server_name an1234.top; 
        #证书文件名称
        ssl_certificate an1234.top_bundle.crt; 
        #私钥文件名称
        ssl_certificate_key an1234.top.key; 
        ssl_session_timeout 5m;
        #请按照以下协议配置
        ssl_protocols TLSv1.2 TLSv1.3; 
        #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; 
        ssl_prefer_server_ciphers on;
        location / {
           #网站主页路径。此路径仅供参考,具体请您按照实际目录操作。
           #例如,您的网站运行目录在/etc/www下,则填写/etc/www。
            root /var/www/; 
            index  index.html index.htm;
        }
        location /api/ {
            # 请求传参数的大小上限
            client_max_body_size 10m;
            proxy_pass   https://an1234.top:1234/api/;
            # nginx跟后端服务器连接超时时间
            proxy_connect_timeout 3000;
            # 后端服务器数据回传超时时间
            proxy_send_timeout 3000;
            # 连接成功后,后端服务器响应超时时间
            proxy_read_timeout 3000;
        }
        # 请求错误展示错误画面
        error_page  404  /404;
        # redirect server error pages to the static page /50x.html
        #
        # error_page   500 502 503 504  /500;
    }

在这个示例中,我们假定你的证书与密钥文件在 \nginx-1.20.2\conf 目录下,并将其命名为 an1234.top_bundle.crtan1234.top.key。你需要将 server_name 替换为你实际的域名,并将 proxy_pass 设置为你的后端服务器的地址。

此外,proxy_ssl_server_name 选项也很重要。它告诉 Nginx 在建立 SSL 连接时使用代理请求中的目标主机名,以防止后端服务器配置中的错误或问题。你可以根据需要添加其他的 SSL 相关设置或调整代理相关的设置。

反向代理

可以将请求转发到多个Web服务器或应用服务器,进行负载均衡和高可用性的实现,同时可以对请求进行安全策略控制和缓存处理。

在 Nginx 中使用 proxy_pass 配置实现反向代理,例如:

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://127.0.0.1:8080;
    }
}

这个配置将会把请求转发到 127.0.0.1:8080 这个地址上。

其中,location 指定了匹配的 URL,对应的是 / 根路径,也可以设置其他的路径,例如 /api 等等。

你也可以在 proxy_pass 后面添加一些参数,用于控制代理行为,例如:

server {
    listen 80;
    server_name localhost;

    location / {
        proxy_pass http://127.0.0.1:8080;
        # 设置代理头信息
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-NginX-Proxy true;

        # 设置代理的连接超时和读取超时
        proxy_connect_timeout 60;
        proxy_read_timeout 60;

        # 禁止缓存代理内容
        proxy_buffering off;
        proxy_cache off;
    }
}

 

负载均衡

nginx是一款高性能、多功能的Web服务器和反向代理服务器。它也是一种可用于负载均衡的工具。Nginx可以使用不同的算法来将客户端请求分发到不同的后端服务器上,以实现负载均衡的目的。

以下是常见的nginx负载均衡方法:

  1. 轮询(默认):nginx将请求均匀地分配到多个后端服务器上,适用于后端服务器的资源和配置版本相同的情况。
  2. IP哈希:nginx基于客户端IP地址将请求分配给特定的后端服务器。同一个IP地址的请求将总是被转发到同一个服务器。
  3. 最少连接数:随机选择一个有最少连接的服务器来转发请求。这个算法通常适合于连接时间较长的应用程序。
  4. URL哈希:nginx基于URL将请求分配给特定的后端服务器。同一个URL的请求将总是被转发到同一个服务器。

这是一些基本的负载均衡方法,nginx还提供了更高级的负载均衡功能,如动态服务器组成和自适应负载平衡等。

nginx可以通过配置文件来实现负载均衡。以下是一个简单的nginx负载均衡配置实例:

在nginx.conf文件中增加以下配置:

http {
    upstream myapp {
        server backend1.example.com weight=3;
        server backend2.example.com;
        server backend3.example.com;
    }

    server {
        listen 80;
        location / {
            proxy_pass http://myapp;
        }
    }
}

解释如下:

  • upstream myapp:定义一个名称为myapp的服务器集群,包含多个后端服务器。
  • server backend1.example.com weight=3:定义一个名为backend1.example.com的后端服务器,并设置它的权重为3。
  • server backend2.example.com:定义一个名为backend2.example.com的后端服务器,默认权重为1。
  • server backend3.example.com:定义一个名为backend3.example.com的后端服务器,默认权重为1。
  • location /:定义请求的URL地址,例如http://an1234.top/,其中“/”表示根目录。
  • proxy_pass http://myapp:将请求转发给myapp服务器集群,使用默认的负载均衡算法(轮询)。

在上面的配置文件中,我们定义了一个服务器集群myapp,包含三个后端服务器backend1、backend2和backend3,其中backend1的权重为3,其他两个服务器的权重为1,所以backend1将获得更多的流量。

通过这个简单的配置,我们可以实现nginx的负载均衡功能。nginx还提供了其他高级的负载均衡功能,可以根据实际需求进行调整和优化。

你可能感兴趣的:(nginx,负载均衡,运维)