nginx-install

Nginx install #

Download Source #

Download page: http://nginx.org/en/download.html

Compile and install #

bash
# CentOS
sudo yum install -y make gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel gd gd-devel

# Ubuntu
sudo apt install -y make gcc build-essential libtool libpcre3 libpcre3-dev zlib1g zlib1g-dev openssl libssl-dev libgd-dev

# 若运行./configure提示缺少openssl则安装:
# CentOS
#sudo yum install -y openssl-devel
# Ubuntu
#sudo apt install -y libssl-dev

# 确认以下命令中的 --prefix/--user/--group 参数:
./configure --prefix=/home/deploy/nginx --user=deploy --group=deploy --with-http_ssl_module --with-http_image_filter_module --with-http_realip_module --with-http_sub_module --with-http_gunzip_module --with-http_gzip_static_module

make && make install

# 确认以下命令中的安装目录:
sudo ln -s /home/deploy/nginx/sbin/nginx /usr/sbin/

Post install #

bash
# 确认以下命令中的安装目录:
mkdir /home/deploy/nginx/conf.d

/home/deploy/nginx/conf/nginx.conf:

text
worker_processes  4;
http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                    '$status $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';
    server_tokens off;
    map $http_upgrade $connection_upgrade {
        default upgrade;
        '' close;
    }
    server {
        return 403;
    }
    include /home/deploy/nginx/conf.d/*.conf;
}

配置滚动日志(/etc/logrotate.d/nginx):

text
/home/deploy/nginx/logs/*.log {
    create 0640 deploy deploy
    daily
    rotate 10
    missingok
    notifempty
    compress
    delaycompress
    sharedscripts
    postrotate
        /bin/kill -USR1 `cat /home/deploy/nginx/logs/nginx.pid 2>/dev/null` 2>/dev/null || true
    endscript
}

nginx.service #

bash
# 确认以下命令中的安装目录:
echo '[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target

[Service]
Type=forking
PIDFile=/home/deploy/nginx/logs/nginx.pid
ExecStart=/home/deploy/nginx/sbin/nginx
ExecReload=/bin/sh -c "/bin/kill -s HUP $(/bin/cat /home/deploy/nginx/logs/nginx.pid)"
ExecStop=/bin/sh -c "/bin/kill -s TERM $(/bin/cat /home/deploy/nginx/logs/nginx.pid)"

[Install]
WantedBy=multi-user.target
' | tee /home/deploy/nginx/nginx.service

sudo systemctl link /home/deploy/nginx/nginx.service
#sudo ln -s /home/deploy/nginx/nginx.service /usr/lib/systemd/system/
#sudo systemctl daemon-reload
sudo systemctl enable --now nginx

htpasswd #

bash
# CentOS
sudo yum install -y httpd-tools
# Ubuntu
sudo apt-get install -y apache2-utils

# Usage: help
htpasswd -h
# Usage: create file "users" for user "bob" and prompt for password
htpasswd -c users bob
# Usage: update file "users" for user "bob" and prompt for password
htpasswd users bob
# Usage: update file "users" for user "bob" with password "123456"
htpasswd -b users bob 123456

Basic Auth config:

text
auth_basic "Welcome";
auth_basic_user_file /etc/nginx/htpasswd/test-users;
2024年12月14日