安装

CentOS 7.9

  1. 安装依赖

    [root@ecs ~]# yum install -y gcc pcre-devel openssl-devel
  2. 安装nginx

    [root@ecs ~]# groupadd www && useradd -g www www -s /sbin/nologin
    [root@ecs ~]# cd /usr/local/src
    [root@ecs src]# tar -zxvf nginx-1.30.1.tar.gz && cd nginx-1.30.1
    [root@ecs src]# ./configure --prefix=/usr/local/nginx \
    --with-http_ssl_module \
    --with-http_stub_status_module \
    --with-http_gzip_static_module \
    --user=www --group=www
    [root@ecs src]# make && make install
    • nginx安装时依赖pcre、openssl和zlib模块。使用yum install -y pcre-devel openssl-devel安装这3个模块(安装openssl-devel会安装依赖zlib-devel),nginx会自动查找依赖模块。
    • 如果不想安装这些依赖模块,可以使用--with-pcre=--with-openssl=--with-zlib=指定模块源码路径。

    模块说明:

    模块说明
    pcre提供正则表达式支持,rewrite模块依赖PCRE库,编译pcre依赖gcc-c++。
    下载地址:https://sourceforge.net/projects/pcre/files/pcre/8.45/pcre-8.45.tar.bz2/download
    openssl--with-http_ssl_module启用ssl模块,依赖openssl。
    下载地址:https://www.openssl.org/source/openssl-1.1.1v.tar.gz
    zlib文件压缩和解压缩的库,使用zlib对http数据包进行gzip压缩和解压缩。
    下载地址:https://zlib.net/fossils/zlib-1.3.1.tar.gz

    模块源码安装

    [root@ecs ~]# yum install -y bzip2 gcc-c++
    [root@ecs ~]# cd /usr/local/src
    [root@ecs src]# tar -jxvf pcre-8.45.tar.bz2
    [root@ecs src]# tar -zxvf openssl-1.1.1v.tar.gz
    [root@ecs src]# tar -zxvf zlib-1.3.1.tar.gz
    [root@ecs src]# groupadd www && useradd -g www www -s /sbin/nologin
    [root@ecs src]# tar -zxvf nginx-1.30.4.tar.gz && cd nginx-1.30.4
    [root@ecs src]# ./configure --prefix=/usr/local/nginx \
    --with-http_ssl_module \
    --with-http_stub_status_module \
    --with-http_gzip_static_module \
    --with-pcre=/usr/local/src/pcre-8.45 \
    --with-zlib=/usr/local/src/zlib-1.3.1 \
    --with-openssl=/usr/local/src/openssl-1.1.1v \
    --user=www --group=www
    [root@ecs src]# make && make install
  3. 开放防火墙端口

    [root@ecs ~]# firewall-cmd --zone=public --add-port=80/tcp --permanent
    [root@ecs ~]# firewall-cmd --zone=public --add-port=443/tcp --permanent
    [root@ecs ~]# firewall-cmd --reload
  4. 开机自启动

    [root@ecs ~]# sed -i '/#pid/apid logs/nginx.pid;' /usr/local/nginx/conf/nginx.conf
    [root@ecs ~]# cat > /usr/lib/systemd/system/nginx.service <<EOF
    [Unit]
    Description=The nginx HTTP and reverse proxy server
    After=network-online.target remote-fs.target nss-lookup.target
    Wants=network-online.target
    
    [Service]
    Type=forking
    PIDFile=/usr/local/nginx/logs/nginx.pid
    ExecStartPre=/usr/local/nginx/sbin/nginx -t
    ExecStart=/usr/local/nginx/sbin/nginx
    ExecReload=/usr/local/nginx/sbin/nginx -s reload
    ExecStop=/usr/local/nginx/sbin/nginx -s quit
    KillSignal=SIGQUIT
    TimeoutStopSec=5
    KillMode=process
    PrivateTmp=true
    
    [Install]
    WantedBy=multi-user.target
    EOF
    [root@ecs ~]# chmod a+x /usr/lib/systemd/system/nginx.service
    [root@ecs ~]# systemctl enable --now nginx
  5. 设置虚拟主机

    [root@ecs ~]# mkdir -p /usr/local/nginx/conf/conf.d
    [root@ecs ~]# sed -i '/^http {$/,/^}$/ {
    /^}$/ i\    include /usr/local/nginx/conf/conf.d/*.conf;
    }' /usr/local/nginx/conf/nginx.conf
    [root@ecs ~]# mkdir -p /data/{wwwroot,wwwlog}
    [root@ecs ~]# cat > /usr/local/nginx/conf/conf.d/wiseidc.conf <<EOF
    log_format wiseidc '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for"';
    
    server {
        listen 80;
        server_name wiseidc.com www.wiseidc.com;
        return 301 https://$server_name$request_uri;
    }
    
    server {
        listen 443 ssl;
        ssl_certificate /etc/letsencrypt/live/wiseidc.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/wiseidc.com/privkey.pem;
        ssl_session_timeout 5m;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
        ssl_prefer_server_ciphers on;
    
        server_name wiseidc.com www.wiseidc.com;
        
        root /data/wwwroot/wiseidc;
    
        location / {
            proxy_pass http://127.0.0.1:8000;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    
        client_max_body_size 2M;
        location ~ .*\.(php|php5)?$ {
            fastcgi_pass 127.0.0.1:9000;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;
        }
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {
            expires 30d;
        }
        location ~ .*\.(js|css)?$ {
            expires 12h;
        }
        location / {
            index index.html index.htm index.php;
            if (!-e $request_filename) {
                rewrite ^(.*)$ /index.php/$1 last;
                break;
            }
            if (!-e $request_filename) {
                rewrite ^/index.php/(.*)$ /index.php?$1 last;
                break;
            }
        }
    
        access_log /data/wwwlog/wiseidc.log wiseidc;
    }
    EOF
    • /^http {$/,/^}$/:匹配第一个http {所在行到第一个}所在行之间的所有行。
    • /A/,/B/ {}:对A到B范围内的行执行{}内的命令。
    • /^}$/ i\:在}所在行前插入。
  6. 禁止IP访问

    [root@ecs ~]# sed -i '/^[[:space:]]*server[[:space:]]*{/i\
        server {\
            listen 80;\
            server_name localhost;\
            deny all;\
        }\
    ' /usr/local/nginx/conf/nginx.conf

    或者:

    [root@ecs ~]# sed -i '0,/server_name  localhost;/{
    /localhost;$/a\        deny all;
    }' /usr/local/nginx/conf/nginx.conf
  7. 部署网站

    [root@ecs wwwroot]# scp root@172.22.159.123:/data/wwwroot/wiseidc.tar.gz /data/wwwroot/
    [root@ecs wwwroot]# tar -zxvf wiseidc.tar.gz
    [root@ecs wwwroot]# chown -R www:www /data/wwwroot/wiseidc
    [root@ecs wwwroot]# chmod -R 550 /data/wwwroot/wiseidc
    [root@ecs wwwroot]# cd /data/wwwroot/wiseidc
    [root@ecs wiseidc]# chmod -R 770 index.html caches/ uploadfile/ phpsso_server/
    [root@ecs wiseidc]# echo "open_basedir=/data/wwwroot/wiseidc/:/tmp/" >> .user.ini
    [root@ecs wiseidc]# chattr +i .user.ini

Ubuntu

apt安装

  1. 安装nginx

    maisi@ecs:~$ apt-get install nginx
    maisi@ecs:~$ nginx -v
    nginx version: nginx/1.18.0 (Ubuntu)
  2. 启动nginx

    maisi@ecs:~$ systemctl enable --now nginx
    maisi@ecs:~$ systemctl status nginx
  3. 防火墙放行端口

    maisi@ecs:~$ sudo ufw allow 80/tcp
    maisi@ecs:~$ sudo ufw allow 443/tcp

    或者:

    maisi@ecs:~$ sudo sudo ufw allow http
    maisi@ecs:~$ sudo sudo ufw allow https
  4. 常见目录说明

    路径说明
    /usr/sbin/nginx主程序
    /etc/nginx存放配置文件
    /usr/share/nginx存放静态文件
    /var/log/nginx存放日志

源码编译安装

  1. 安装依赖

    maisi@ecs:~$ apt-get install make gcc zlib1g-dev libpcre3-dev libssl-dev

    Ubuntu 26.04

    maisi@ecs:~$ apt install zlib1g-dev libpcre2-dev libssl-dev
  2. 编译nginx

    maisi@ecs:~$ groupadd www
    maisi@ecs:~$ useradd -g www www -s /sbin/nologin
    maisi@ecs:~$ cd /usr/local/src && tar -zxvf nginx-1.24.0.tar.gz && cd nginx-1.24.0
    maisi@ecs:/usr/local/src/nginx-1.24.0$ ./configure --prefix=/usr/local/nginx \
    --with-http_stub_status_module \
    --with-http_gzip_static_module \
    --with-http_ssl_module \
    --user=www --group=www
    maisi@ecs:/usr/local/src/nginx-1.24.0$ make && sudo make install

    nginx安装时依赖pcreopensslzlib模块。使用apt-get安装依赖之后,则无需使用--with-pcre=--with-openssl=--with-zlib=指定模块源码路径。

    Ubuntu 26.04

    root@ecs:~# cd /usr/local/src
    root@ecs:/usr/local/src# tar -jxvf pcre-8.45.tar.bz2
    root@ecs:/usr/local/src# tar -zxvf zlib-1.3.2.tar.gz
    root@ecs:/usr/local/src# tar -zxvf openssl-3.5.7.tar.gz
    root@ecs:/usr/local/src# groupadd www && useradd -g www www -s /sbin/nologin
    root@ecs:/usr/local/src# tar -zxvf nginx-1.30.4.tar.gz && cd nginx-1.30.4
    root@ecs:/usr/local/src/nginx-1.30.4# ./configure --prefix=/usr/local/nginx \
    --with-http_ssl_module \
    --with-http_stub_status_module \
    --with-http_gzip_static_module \
    --with-pcre=/usr/local/src/pcre-8.45 \
    --with-zlib=/usr/local/src/zlib-1.3.2 \
    --with-openssl=/usr/local/src/openssl-3.5.7 \
    --user=www --group=www
    root@ecs:/usr/local/src/nginx-1.30.4# make && make install
  3. 启动nginx

    maisi@ecs:~$ sudo /usr/local/nginx/sbin/nginx

    查看进程

    maisi@ecs:~$ ps -ef | grep nginx
  4. 关闭nginx

    maisi@ecs:~$ sudo /usr/local/nginx/sbin/nginx -s stop
  5. 开启自启动

    maisi@ecs:~$ cat > /etc/systemd/system/nginx.service <<EOF
    [Unit]
    Description=The nginx HTTP and reverse proxy server
    After=network.target
    
    [Service]
    Type=forking
    PIDFile=/usr/local/nginx/logs/nginx.pid
    ExecStartPre=/usr/local/nginx/sbin/nginx -t
    ExecStart=/usr/local/nginx/sbin/nginx
    ExecReload=/usr/local/nginx/sbin/nginx -s reload
    ExecStop=/usr/local/nginx/sbin/nginx -s quit
    
    [Install]
    WantedBy=multi-user.target
    EOF
    maisi@ecs:~$ chown root:root /etc/systemd/system/nginx.service
    maisi@ecs:~$ chmod a+x /etc/systemd/system/nginx.service
    maisi@ecs:~$ systemctl enable --now nginx

Windows

配置

模块

标签: none

添加新评论