1. 安装前准备

确保系统有 gccmakeopensslpcre 等工具和库,如果没有,先安装它们:

sudo yum groupinstall "Development Tools" -y
sudo yum install -y pcre-devel openssl-devel zlib-devel gd-devel

2. 创建 nginx 用户

为了安全性考虑,Nginx 不建议以 root 用户启动。可以为 Nginx 创建一个专门的用户:

sudo useradd nginx

3. 下载并解压 Nginx 源码

Nginx 官网 或者使用 wget 下载 Nginx 最新版本的源码,并解压:

wget https://nginx.org/download/nginx-1.26.2.tar.gz
tar -zxvf nginx-1.26.2.tar.gz
cd nginx-1.26.2

4. 配置 Nginx 编译选项

在编译 Nginx 时,添加需要的模块,比如启用 http2sslgzip 等模块:

./configure --user=nginx \
            --prefix=/usr/local/nginx \
            --with-http_ssl_module \
            --with-http_realip_module \
            --with-http_image_filter_module \
            --with-http_gunzip_module \
            --with-http_gzip_static_module \
            --with-http_stub_status_module \
            --http-log-path=/var/log/nginx/access.log \
            --error-log-path=/var/log/nginx/error.log \
            --with-pcre \
            --with-http_v2_module
  • --with-http_v2_module:启用 HTTP/2 模块。
  • --with-http_ssl_module:启用 SSL 支持。
  • --with-http_realip_module:启用获取客户端真实 IP 地址支持。
  • --with-http_image_filter_module:启用图片处理支持。
  • --with-pcre:支持正则表达式模块。

5. 编译和安装 Nginx

配置完成后,开始编译并安装:

make
sudo make install

6. 启动 Nginx 服务

确保 /usr/local/nginx/sbin/ 目录在系统路径中,或者直接使用完整路径启动 Nginx。

启动 Nginx 服务:

sudo /usr/local/nginx/sbin/nginx

到这里Nginx已经安装成功了

7.扩展,配置 Nginx 以启用 HTTP/2

编辑 Nginx 配置文件(如 /usr/local/nginx/my_conf/apishuju-service.conf):

server {
    listen 443 ssl http2;  # 使用 http2
    server_name api.songzixian.com;

    root /usr/local/java/jar/api-service/vue/;
    index index.html index.htm;

    charset utf-8;
    client_max_body_size 10M;

    error_page 404 /index.html;

    ssl_certificate /etc/nginx/cert/_.apishuju.com.pem;
    ssl_certificate_key /etc/nginx/cert/_.apishuju.com.key;
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:1m;

    ssl_ciphers 'TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384';
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;

    # 启用 Gzip 压缩
    gzip on;
    gzip_disable "msie6";
    gzip_vary on;
    gzip_proxied any;
    gzip_comp_level 6;
    gzip_buffers 16 8k;
    gzip_http_version 1.1;
    gzip_types text/plain text/css application/javascript application/json application/xml application/xml+rss text/javascript image/svg+xml;

    # 静态文件缓存配置
    location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff|woff2|ttf|svg)$ {
        expires 30d;
        add_header Cache-Control "public, no-transform, max-age=2592000";
    }

    # Java应用的代理配置
    location ~ ^/(api|api2|api-metadata)/ {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass http://localhost:8288;
        proxy_buffer_size 128k;
        proxy_buffers 8 128k;
        proxy_busy_buffers_size 256k;
        proxy_temp_file_write_size 256k;
    }

    # 查看 Nginx 状态
    location = /status {
        stub_status on;
    }
}

server {
    listen 80;
    server_name api.songzixian.com;
    rewrite ^(.*)$ https://$host$1 permanent;
}

8. 测试并重新加载配置

在修改配置后,使用以下命令检查 Nginx 配置是否正确:

sudo /usr/local/nginx/sbin/nginx -t

如果没有错误,重新加载配置:

sudo /usr/local/nginx/sbin/nginx -s reload

9. 创建 Nginx PID 文件

如果出现 nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory) 错误,可以手动创建 nginx.pid 文件所在的目录:

sudo mkdir -p /usr/local/nginx/logs

然后再次启动 Nginx:

sudo /usr/local/nginx/sbin/nginx

总结

  1. 配置 Nginx 时必须启用 http2 模块。
  2. 使用 listen 443 ssl http2; 启用 HTTP/2 协议。
  3. 对于 Nginx 配置文件中的 http2 指令,使用 listen 参数时不需要额外添加 http2 on;,但如果使用了 HTTP/2 功能,最好加上 http2 on; 以明确启用。
  4. 安装和启动过程中的注意事项包括确保正确配置用户、目录和权限。

通过这些步骤,你应该能成功安装并启用 HTTP/2 的 Nginx 服务。如果之后遇到其他问题,可以再进行调试和优化。

Last modification:November 6, 2024
如果觉得这篇技术文章对你有用,请随意赞赏