包管理器安装 https://nginx.org/en/linux_packages.html#RHEL-CentOS
1 2 3 4 cat /etc/redhat-releaseCentOS Linux release 7.7.1908 (Core) yum install yum-utils
1 nano /etc/yum.repos.d/nginx.repo
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [nginx-stable] name=nginx stable repo baseurl=http://nginx.org/packages/centos/$releasever /$basearch / gpgcheck=1 enabled=1 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true [nginx-mainline] name=nginx mainline repo baseurl=http://nginx.org/packages/mainline/centos/$releasever /$basearch / gpgcheck=1 enabled=0 gpgkey=https://nginx.org/keys/nginx_signing.key module_hotfixes=true
1 2 yum-config-manager --enable nginx-mainline
1 2 yum clean all // 清理缓存 yum makecache // 服务器的包信息下载到本地电脑缓存起来
1 2 3 4 yum list | grep nginx yum install nginx -y nginx -V rpm -ql nginx // 列出nginx的安装文件,快速定位配置文件目录
1 2 3 systemctl enable nginx systemctl start nginx systemctl status nginx
编译安装
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 –prefix –pid-path –lock-path –with-http_ssl_module –with-http_dav_module –with-http_flv_module –with-http_realip_module –with-http_gzip_static_module –with-http_stub_status_module –with-mail –with-mail_ssl_module –with-pcre=../pcre-8.11 –with-zlib=../zlib-1.2.5 –with-debug –http-client-body-temp-path –http-proxy-temp-path –http-fastcgi-temp-path –http-uwsgi-temp-path=/var/tmp/nginx/uwsgi –http-scgi-temp-path=/var/tmp/nginx/scgi
安装依赖 1 yum install wget gcc gcc-c++ pcre pcre-devel openssl openssl-devel zlib zlib-devel perl-core
下载 Nginx 1 2 3 cd /usr/local/srcwget http://nginx.org/download/nginx-1.16.1.tar.gz tar xf nginx-1.16.1.tar.gz
下载 openssl 1 2 3 cd /usr/local/src/nginx-1.16.1wget https://www.openssl.org/source/openssl-1.1.1f.tar.gz tar xf openssl-1.1.1f.tar.gz
创建 nginx 启动用户 1 2 groupadd -r nginx useradd -r -g nginx -s /bin/false -M nginx
编译Nginx 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 $ cd /usr/local/src/nginx-1.16.1/ ./configure --user=nginx \ --group=nginx \ --prefix=/usr/local/nginx \ --with-http_stub_status_module \ --with-http_ssl_module \ --with-http_v2_module \ --with-http_gzip_static_module \ --with-http_sub_module \ --with-debug \ --with-openssl=openssl-1.1.1f --conf-path=/etc/nginx/nginx.conf \ --sbin-path=/usr/sbin/nginx \ --error-log-path=/var/log/nginx/error_log \ --pid-path=/var/run/nginx/nginx.pid \ --lock-path=/var/lock/nginx.lock \ --http-log-path=/var/log/nginx/access_log \ $ make $ make install
设置nginx软链 1 ln -sv /usr/local/nginx/sbin/nginx /usr/local/sbin/
开机启动 1 2 3 4 5 wget -P /etc/init.d/ http://down.whsir.com/downloads/nginx chmod +x /etc/init.d/nginxchkconfig --add nginx chkconfig nginx on chkconfig --list
启动脚本 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin NAME=nginx NGINX_BIN=/usr/local/nginx/sbin/$NAME CONFIGFILE=/usr/local/nginx/conf/$NAME .conf PIDFILE=/usr/local/nginx/logs/$NAME .pid if [ -s /bin/ss ]; then StatBin=/bin/ss else StatBin=/bin/netstat fi case "$1 " in start) echo -n "Starting $NAME ... " if $StatBin -tnpl | grep -q nginx;then echo "$NAME (pid `pidof $NAME `) already running." exit 1 fi $NGINX_BIN -c $CONFIGFILE if [ "$?" != 0 ] ; then echo " failed" exit 1 else echo " done" fi ;; stop) echo -n "Stoping $NAME ... " if ! $StatBin -tnpl | grep -q nginx; then echo "$NAME is not running." exit 1 fi $NGINX_BIN -s stop if [ "$?" != 0 ] ; then echo " failed. Use force-quit" exit 1 else echo " done" fi ;; status) if $StatBin -tnpl | grep -q nginx; then PID=`pidof nginx` echo "$NAME (pid $PID ) is running..." else echo "$NAME is stopped." exit 0 fi ;; force-quit|kill) echo -n "Terminating $NAME ... " if ! $StatBin -tnpl | grep -q nginx; then echo "$NAME is is stopped." exit 1 fi kill `pidof $NAME ` if [ "$?" != 0 ] ; then echo " failed" exit 1 else echo " done" fi ;; restart) $0 stop sleep 1 $0 start ;; reload) echo -n "Reload service $NAME ... " if $StatBin -tnpl | grep -q nginx; then $NGINX_BIN -s reload echo " done" else echo "$NAME is not running, can't reload." exit 1 fi ;; configtest) echo -n "Test $NAME configure files... " $NGINX_BIN -t ;; *) echo "Usage: $0 {start|stop|restart|reload|status|configtest|force-quit|kill}" exit 1 ;; esac
常用命令 1 2 3 $ nginx -t $ nginx -s reload $ nginx -s stop
卸载 首先输入命令 ps -ef | grep nginx
检查一下nginx服务是否在运行
kill -9 id
执行命令 find / -name nginx
查找所有名字包含nginx的文件
反代配置 1 2 3 4 5 6 7 location /speed/ { proxy_pass http://ip:port/; proxy_redirect off; proxy_set_header Host $host ; proxy_set_header X-Real-IP $remote_addr ; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ; }
TLS 1.3 1 2 3 4 5 6 7 ssl_certificate /etc/letsencrypt/live/xxx.com/fullchain.pem;ssl_certificate_key /etc/letsencrypt/live/xxx.com/privkey.pem;ssl_protocols TLSv1.2 TLSv1.2 ;ssl_prefer_server_ciphers on ;ssl_ciphers TLS13+AESGCM+AES128:TLS13+AESGCM+AES256:TLS13+CHACHA20:EECDH+ECDSA+AESGCM+AES128:EECDH+ECDSA+CHACHA20:EECDH+ECDSA+AESGCM+AES256:EECDH+ECDSA+AES128+SHA:EECDH+ECDSA+AES256+SHA:EECDH+aRSA+AESGCM+AES128:EECDH+aRSA+CHACHA20:EECDH+aRSA+AESGCM+AES256:EECDH+aRSA+AES128+SHA:EECDH+aRSA+AES256+SHA:RSA+AES128+SHA:RSA+AES256+SHA:RSA+3DES;ssl_session_timeout 5m ;
测试站点 https://www.ssllabs.com/ssltest/
包管理器编译参数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 $ cd /usr/local/src/nginx-1.16.1/ ./configure --user=nginx \ --group=nginx \ --prefix=/etc/nginx \ --sbin-path=/usr/sbin/nginx \ --modules-path=/usr/lib64/nginx/modules \ --conf-path=/etc/nginx/nginx.conf \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --pid-path=/var/run/nginx.pid \ --lock-path=/var/run/nginx.lock \ --http-client-body-temp-path=/var/cache/nginx/client_temp \ --http-proxy-temp-path=/var/cache/nginx/proxy_temp \ --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \ --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \ --http-scgi-temp-path=/var/cache/nginx/scgi_temp \ --with-openssl=openssl-1.1.1f \ --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie'
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Configuration summary + using threads + using system PCRE library + using OpenSSL library: openssl-1.1.1f + using system zlib library nginx path prefix: "/etc/nginx" nginx binary file: "/usr/sbin/nginx" nginx modules path: "/usr/lib64/nginx/modules" nginx configuration prefix: "/etc/nginx" nginx configuration file: "/etc/nginx/nginx.conf" nginx pid file: "/var/run/nginx.pid" nginx error log file: "/var/log/nginx/error.log" nginx http access log file: "/var/log/nginx/access.log" nginx http client request body temporary files: "/var/cache/nginx/client_temp" nginx http proxy temporary files: "/var/cache/nginx/proxy_temp" nginx http fastcgi temporary files: "/var/cache/nginx/fastcgi_temp" nginx http uwsgi temporary files: "/var/cache/nginx/uwsgi_temp" nginx http scgi temporary files: "/var/cache/nginx/scgi_temp"
1 nano /usr/lib/systemd/system/nginx.service
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 [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=/var/run/nginx.pid ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s TERM $MAINPID [Install] WantedBy=multi-user.target
docker 运行
1 2 3 4 5 6 7 8 9 10 11 docker login nano Dockerfile docker build -t nginx:v1 ./ docker commit [容器ID] [image name] docker tag [容器ID] [用户名]/[images name] docker tag [image name]:[版本 tag] [用户名]/[iamge name]:[版本 tag] docker push findthewayxf/[image name]:[版本 tag]
1 2 3 4 5 6 7 docker run -d --name=nginx --net=host --restart=always \ -v /etc/localtime:/etc/localtime \ -v /etc/nginx/nginx.conf:/etc/nginx/nginx.conf \ -v /etc/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf \ -v /var/www/html/:/var/www/html/ \ -v /var/www/ssl/:/var/www/ssl/ \ findthewayxf/my-nginx:latest
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 user www-data www-data;pid /run/nginx.pid;worker_processes auto;worker_rlimit_nofile 100000 ;events { worker_connections 100000 ; multi_accept on ; use epoll ; } http { include mime.types; default_type application/octet-stream; fastcgi_connect_timeout 300 ; fastcgi_send_timeout 300 ; fastcgi_read_timeout 300 ; fastcgi_buffer_size 64k ; fastcgi_buffers 64 4k ; fastcgi_busy_buffers_size 128k ; fastcgi_temp_file_write_size 128k ; fastcgi_intercept_errors on ; server_tokens off ; sendfile on ; tcp_nodelay on ; tcp_nopush on ; keepalive_timeout 60 ; client_header_timeout 60 ; client_body_timeout 60 ; reset_timedout_connection on ; types_hash_max_size 2048 ; gzip on ; gzip_disable "MSIE [1-6]\." ; gzip_vary on ; gzip_proxied any; gzip_comp_level 4 ; gzip_min_length 256 ; gzip_buffers 16 8k ; gzip_http_version 1 .0 ; gzip_types text/plain text/javascript text/css text/js text/xml text/x-component text/x-json font/opentype application/x-font-ttf application/javascript application/x-javascript application/x-web-app-manifest+json application/json application/atom+xml application/xml application/xml+rss application/xhtml+xml application/vnd.ms-fontobject image/svg+xml image/x-icon; brotli on ; brotli_static on ; brotli_comp_level 6 ; brotli_buffers 16 8k ; brotli_min_length 20 ; brotli_window 16m ; brotli_types *; access_log off ; error_log off ; include /etc/nginx/conf.d/*.conf ; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 server { listen 80 ; server_name harlon.me; return 301 https://$server_name $request_uri ; } server { listen 443 ssl reuseport; server_name harlon.me; root /var/www/html; ssl_certificate /var/www/ssl/harlon.me.cer; ssl_certificate_key /var/www/ssl/harlon.me.key; ssl_protocols TLSv1.2 TLSv1.3 ; ssl_prefer_server_ciphers on ; ssl_ciphers TLS13+AESGCM+AES128:TLS13+AESGCM+AES256:TLS13+CHACHA20:EECDH+ECDSA+AESGCM+AES128:EECDH+ECDSA+CHACHA20:EECDH+ECDSA+AESGCM+AES256:EECDH+ECDSA+AES128+SHA:EECDH+ECDSA+AES256+SHA:EECDH+aRSA+AESGCM+AES128:EECDH+aRSA+CHACHA20:EECDH+aRSA+AESGCM+AES256:EECDH+aRSA+AES128+SHA:EECDH+aRSA+AES256+SHA:RSA+AES128+SHA:RSA+AES256+SHA:RSA+3DES; ssl_session_timeout 10m ; ssl_session_cache shared:le_nginx_SSL:10m ; ssl_buffer_size 1400 ; location ~* ^.+\.(ico|gif|jpg|jpeg|png)$ { root /var/www/blog; access_log off ; expires 1d ; } location ~* ^.+\.(css|js|txt|xml|swf|wav)$ { root /var/www/html; access_log off ; expires 10m ; } location / { root /var/www/html; if (-f $request_filename ) { rewrite ^/(.*)$ /$1 break ; } } location /nginx_status { stub_status on ; access_log off ; } }