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;