ubuntu20.04 安装 nginx 1.22.1

安装依赖

apt -y install gcc make libssl-dev zlib1g-dev libgd-dev libgeoip-dev libpcre2-dev libpcre3-dev

创建用户

groupadd -g 113  -r nginx && useradd -M -N -g nginx -d /data/apps/nginx  -r  -s /bin/false -c "NGINX Server" -u 112  nginx

下载nginx

# wget http://nginx.org/download/nginx-1.22.1.tar.gz
# tar xf nginx-1.22.1.tar.gz
# cd nginx-1.22.1

修改版本号

cat src/core/nginx.h 

/*
 * Copyright (C) Igor Sysoev
 * Copyright (C) Nginx, Inc.
 */


#ifndef _NGINX_H_INCLUDED_
#define _NGINX_H_INCLUDED_


#define nginx_version      1020002
#define NGINX_VERSION      "1.20.2"
#define NGINX_VER          "nginx/" NGINX_VERSION

#ifdef NGX_BUILD
#define NGINX_VER_BUILD    NGINX_VER " (" NGX_BUILD ")"
#else
#define NGINX_VER_BUILD    NGINX_VER
#endif

#define NGINX_VAR          "NGINX"
#define NGX_OLDPID_EXT     ".oldbin"


#endif /* _NGINX_H_INCLUDED_ */

安装 nginx

./configure  --prefix=/usr/local/nginx --conf-path=/usr/local/nginx/conf/nginx.conf --with-stream_ssl_preread_module --with-poll_module --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-stream --with-stream_ssl_module --with-cc-opt=-Wno-error --with-ld-opt= --user=nginx --group=nginx --with-threads --with-file-aio --http-client-body-temp-path=/usr/local/nginx/client/ --http-proxy-temp-path=/usr/local/nginx/proxy/ --http-fastcgi-temp-path=/usr/local/nginx/fcgi/ --http-uwsgi-temp-path=/usr/local/nginx/uwsgi --http-scgi-temp-path=/usr/local/nginx/scgi --error-log-path=/usr/local/nginx/logs/error.log --http-log-path=/usr/local/nginx/logs/access.log --pid-path=/usr/local/nginx/nginx.pid --lock-path=/usr/local/nginx/nginx.lock --with-pcre
make -j 8 && make install

nginx.service

cat >> /lib/systemd/system/nginx.service  << EOF
[Unit]
Description=nginx - high performance web server
Documentation=https://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF

开机启动

systemctl enable nginx && systemctl start nginx
● nginx.service - nginx - high performance web server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2023-03-31 16:46:15 CST; 1s ago
       Docs: https://nginx.org/en/docs/
    Process: 14346 ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf (code=exited, status=0/SUCCESS)
   Main PID: 14347 (nginx)
      Tasks: 5 (limit: 9402)
     Memory: 111.3M
        CPU: 89ms
     CGroup: /system.slice/nginx.service
             ├─14347 "nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf"
             ├─14348 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
             ├─14349 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
             ├─14350 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
             └─14351 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""

Mar 31 16:46:15 app-01 systemd[1]: Starting nginx - high performance web server...
Mar 31 16:46:15 app-01 systemd[1]: Started nginx - high performance web server.

nginx.conf

user  nginx;
worker_processes  auto;

worker_rlimit_nofile 65535;
events {
    worker_connections  65535;
    use epoll;
    accept_mutex on;
}


http {
    include       mime.types;
    default_type  application/octet-stream;


    log_format json escape=json '{'
                        '"@timestamp":"$time_iso8601",'
                        '"@source":"$server_addr",'
                        '"@nginx_fields":{'
                            '"http_x_forwarded_for":"$http_x_forwarded_for",'
                            '"request":"$request",'
                            '"status":"$status",'
                            '"body_bytes_sent":"$body_bytes_sent",'
                            '"http_referer":"$http_referer",'
                            '"client":"$remote_addr",'
                            '"request_time":"$request_time",'
                            '"upstream_response_time":"$upstream_response_time",'
                            '"upstream_addr":"$upstream_addr",'
                            '"request_method":"$request_method",'
                            '"domain":"$host",'
                            '"url":"$uri",'
                            '"args":"$args",'
                            '"request_body":"$request_body",'
                            '"http_user_agent":"$http_user_agent",'
                            '"remote_addr":"$remote_addr",'
                            '"proxy_add_x_forwarded_for":"$proxy_add_x_forwarded_for"'
                        '}'
                    '}';


    access_log  logs/access.log  json;

    sendfile        on;
    tcp_nopush     on;
    types_hash_max_size 2048;
    client_header_buffer_size 4k;
    client_max_body_size 512M;
    
    # 设置客户端请求主体读取超时时间
    client_body_timeout 120;
    #设置客户端请求头读取超时时间
    client_header_timeout 60;
    #第一个参数指定客户端连接保持活动的超时时间
    keepalive_timeout 55;
    # 指定响应客户端的超时时间
    send_timeout 60;
    # 禁止错误页面中显示 nginx 版本号
    server_tokens off
    # 支持下划线的header
    underscores_in_headers on;
    # 限制每个连接的下载速度
    limit_rate 500m;
    # 定义连接限制
    limit_conn_zone $binary_remote_addr zone=addr:100m;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;

    aio on;
    gzip  on;
    gzip_vary on;  
    gzip_proxied any;
    gzip_min_length 1k;
    gzip_buffers 16 8k;
    gzip_http_version 1.1;
    gzip_comp_level 6;
    gzip_types  text/plain application/json application/javascript application/x-javascript application/css application/xml application/xml+rss text/javascript application/x-httpd-php image/jpeg image/gif image/png image/x-ms-bmp;

 
    include /usr/local/nginx/conf/vhosts/*.conf;

    server {
       listen  80 default_server;
       listen  443 ssl http2 default_server;
       server_name _;
       ssl_certificate /usr/local/nginx/ssl/xxxxx_bundle.crt;
       ssl_certificate_key /usr/local/nginx/ssl/xxxxx.key;
       return 404;
    }
        
    server {
        listen       80;
        server_name  localhost;


        location / {
            root   html;
            real_ip_header     X-Forwarded-For;
            index  index.html index.htm index.php;
        }

        location /basic_status {
           stub_status on;
        }


        location ~ ^/(pm_status|ping)$ {
          fastcgi_pass 127.0.0.1:9000;
          fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
          include        fastcgi_params;
        }

        location ~ \.php$ {
            root           html;
            fastcgi_pass   127.0.0.1:9000;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
        
        error_page 400 404 413 /404.html;
        location = /404.html {
        }

        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
        }
   }
}

nginx使用帮助

# /usr/local/nginx/sbin/nginx -h
nginx version: nginx/1.22.1
Usage: nginx [-?hvVtTq] [-s signal] [-p prefix]
             [-e filename] [-c filename] [-g directives]

Options:
  -?,-h         : this help
  -v            : show version and exit
  -V            : show version and configure options then exit
  -t            : test configuration and exit
  -T            : test configuration, dump it and exit
  -q            : suppress non-error messages during configuration testing
  -s signal     : send signal to a master process: stop, quit, reopen, reload
  -p prefix     : set prefix path (default: /usr/local/nginx/)
  -e filename   : set error log file (default: /usr/local/nginx/logs/error.log)
  -c filename   : set configuration file (default: /usr/local/nginx/conf/nginx.conf)
  -g directives : set global directives out of configuration file

参考文档

https://nginx.org/en/download.html#/

posted @ 2022-02-25 15:08  小吉猫  阅读(2086)  评论(0)    收藏  举报