ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

nginx入门手册

2022-01-18 11:04:13  阅读:122  来源: 互联网

标签:log header server nginx proxy 服务器 手册 入门


一、nginx概况

1、nginx配置文件

  • 核心模块:main http server location mail

2、nginx模块

  • event module:事件处理机制
  • phase handler:称为 handler 模块,处理客户端请求并产生待响应内容
  • output filter:也称为 filter 模块,主要是负责对输出的内容进行处理,可以对输出进行修改
  • upstream:upstream模块实现反向代理的功能,将真正的请求转发到后端服务器上,并从后端服务器上读取响应,发回客户端
  • load-balancer:负载均衡模块,实现特定的算法,在众多的后端服务器中,选择一个服务器出来作为某个请求的转发服务器

二、常用定制

1、存在多个server,都写在nginx.conf,文件太乱

  • 使用include指令,引用server文件,支持通配符

2、调整工作线程

  • work_processes,一般配置为和cpu核心数相同的数量

3、静态页面读取已失效cookie,不使用cookie

location /xxx {
    add_header Cache-Control no-cache;
    add_header Pragma no-cache;
    add_header Expires 0;
}

4、多个服务器负载

  • 与server平级配置
upstream kyxm-server {
    ip_hash; # 绑定同一ip客户端请求到同一服务器
    server 10.10.3.94 weight=1; // weight设置负载权重
    server 10.10.3.95 weight=1;
}

5、哪些模块是比较常用要定制的地方?

  • filter 处理请求或响应页面的内容
  • upstream 负载服务器配置
  • hadler 不常用,但是可以配置请求的负载均衡处理策略

三、配置样例

1、nginx.conf配置文件

点击查看代码
#user  nobody;
worker_processes  4; # 定制:工作线程数(取cpu核心数即可)

#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模块设置
    gzip on; #开启gzip压缩输出
    gzip_min_length 1k; #最小压缩文件大小
    gzip_buffers 4 16k; #压缩缓冲区
    #gzip_http_version 1.0; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
    gzip_comp_level 2; #压缩等级
    gzip_types text/plain application/x-javascript text/css application/xml application/javascript;
    #压缩类型,默认就已经包含text/html,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn。
    gzip_vary on;
    #limit_zone crawler $binary_remote_addr 10m; #开启限制IP连接数的时候需要使用

    include vhost/*.conf; # 定制:外部配置文件加载
}

2、定制配置文件

点击查看代码
upstream kyxm-server {
    ip_hash;  # 同一ip客户端转发到指定服务器
    server 10.10.3.94 weight=1; # 设置该服务器负荷为1 (back 备份机,down 无可用后使用)
    server 10.10.3.95 weight=1;
}

server {
    listen 8899;
    server_name localhost;

    proxy_buffer_size 128k;
    proxy_buffers 32 128k;
    proxy_busy_buffers_size 256k;
    client_max_body_size 2048m; #允许客户端请求的最大单文件字节数(定制:多个服务器就设置大些)
    client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数,
    proxy_connect_timeout 90; #nginx跟后端服务器连接超时时间(代理连接超时)
    proxy_send_timeout 90; #后端服务器数据回传时间(代理发送超时)
    proxy_read_timeout 90; #连接成功后,后端服务器响应时间(代理接收超时)
    proxy_temp_file_write_size 256k;
    charset utf-8;

    proxy_set_header Cookie $http_cookie;
    proxy_set_header Host $host:$server_port;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header REMOTE-HOST $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    #access_log  /var/log/nginx/host.access.log  main;

    location /server/ {
        proxy_pass  http://192.168.8.69:5001/eap/;
        proxy_cookie_path  /eap/ /;

        # 替换
        sub_filter_types 'text/html;charset=UTF-8' '*' text/javascript application/javascript text/plain text/JSON text/css application/json;
        sub_filter '192.168.8.69' '192.168.5.17'; 
        sub_filter_once off; 
    }

    location /server1 {
        root   D:\sysware-609\nginx-1.15.8\html;
        index  index.html index.htm;

        # 定制:禁用cookie缓存,解决切换用户token失败问题
        # proxy_pass http://kyxm-server;
        add_header Cache-Control no-cache;
        add_header Pragma no-cache;
        add_header Expires 0;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
}

参考文档

标签:log,header,server,nginx,proxy,服务器,手册,入门
来源: https://www.cnblogs.com/hackxiyu/p/15816776.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有