| [root@nginx01 ~]# cat /etc/centos-release |
| CentOS Linux release 7.9.2009 (Core) |
| [root@nginx01 ~]# uname -r |
| 3.10.0-1160.el7.x86_64 |
| [root@nginx01 ~]# nginx -v |
| nginx version: nginx/1.20.1 |
| |
| |
| [root@nginx01 ~]# yum -y install epel-release |
| [root@nginx01 ~]# yum -y install nginx keepalived |
| [root@nginx01 ~]# mv /etc/nginx/nginx.conf{,.bak} |
| |
| |
| [root@nginx01 ~]# vim /etc/nginx/nginx.conf |
| user nginx; |
| worker_processes auto; |
| error_log /var/log/nginx/error.log; |
| pid /run/nginx.pid; |
| |
| include /usr/share/nginx/modules/*.conf; |
| |
| events { |
| worker_connections 1024; |
| } |
| |
| #======================= 就这一段 ============================= |
| # 四层负载均衡,为两台Master apiserver组件提供负载均衡 |
| # stream_mudule: http://nginx.org/en/docs/stream/ngx_stream_core_module.html |
| stream { |
| log_format main '$remote_addr $upstream_addr - [$time_local] $status $upstream_bytes_sent'; |
| access_log /var/log/nginx/k8s-access.log main; |
| upstream k8s-apiserver { |
| server 192.168.1.21:6443; |
| server 192.168.1.24:6443; |
| } |
| server { |
| listen 6443; |
| proxy_pass k8s-apiserver; |
| } |
| } |
| # ============================================================= |
| |
| http { |
| log_format main '$remote_addr - $remote_user [$time_local] "$request" ' |
| '$status $body_bytes_sent "$http_referer" ' |
| '"$http_user_agent" "$http_x_forwarded_for"'; |
| .... |
| ..... |
| |
| |
| |
| [root@nginx01 ~]# nginx -t |
| nginx: [emerg] unknown directive "stream" in /etc/nginx/nginx.conf:15 |
| |
| |
| |
| 解决: |
| 先查看nginx现在开启了哪些模块,这些模块要复制下来 |
| [root@nginx01 ~]# nginx -V |
| |
| [root@nginx01 ~]# mv /usr/sbin/nginx{,.bak} |
| [root@nginx01 ~]# cp -r /etc/nginx{,.bak} |
| [root@nginx01 ~]# wget http://nginx.org/download/nginx-1.20.1.tar.gz |
| [root@nginx01 ~]# tar -zxvf nginx-1.20.1.tar.gz |
| 安装依赖 |
| [root@nginx01 ~]# yum -y install libxml2 libxml2-dev libxslt-devel gd-devel perl-devel perl-ExtUtils-Embed GeoIP GeoIP-devel GeoIP-data pcre-devel openssl openssl-devel gcc gcc-c++ |
| |
| [root@nginx01 ~]# cd nginx-1.20.1 |
| 检查模块是否支持 |
| [root@nginx01 nginx-1.20.1]# ./configure --help| grep -w "\-\-with-stream" |
| |
| 重新编译 |
| [root@nginx01 nginx-1.20.1]# ./configure --prefix=/usr/share/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 --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --pid-path=/run/nginx.pid --lock-path=/run/lock/subsys/nginx --user=nginx --group=nginx --with-compat --with-debug --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_degradation_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_mp4_module --with-http_perl_module=dynamic --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-http_xslt_module=dynamic --with-mail=dynamic --with-mail_ssl_module --with-pcre --with-pcre-jit --with-stream=dynamic --with-stream_ssl_module --with-stream_ssl_preread_module --with-threads --with-stream |
| |
| |
| 在上面配置中,最后加上--with-stream选项并去掉下面的选项 |
| --with-file-aio |
| --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -m64 -mtune=generic' |
| --with-google_perftools_module |
| |
| |
| [root@nginx01 nginx-1.20.1]# make |
| |
| make完成后不要继续输入“make install”,以免现在的nginx出现问题 |
| 以上完成后,会在当前目录下的objs目录中生成一个nginx文件,先验证: |
| |
| [root@nginx01 nginx-1.20.1]# find / -name "objs" |
| /root/nginx-1.20.1/objs |
| [root@nginx01 nginx-1.20.1]# pwd |
| /root/nginx-1.20.1 |
| [root@nginx01 nginx-1.20.1]# cd objs/ |
| [root@nginx01 objs]# ./nginx -t |
| nginx: the configuration file /etc/nginx/nginx.conf syntax is ok |
| nginx: configuration file /etc/nginx/nginx.conf test is successful |
| |
| |
| 替换Nginx文件并重启 |
| [root@nginx01 objs]# cp /root/nginx-1.20.1/objs/nginx /usr/sbin/ |
| [root@nginx01 objs]# cd |
| [root@nginx01 ~]# nginx -t |
| nginx: the configuration file /etc/nginx/nginx.conf syntax is ok |
| nginx: configuration file /etc/nginx/nginx.conf test is successful |
| |
| 验证模块是否已添加 |
| [root@nginx01 ~]# nginx -V |
| nginx version: nginx/1.20.1 |
| built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC) |
| built with OpenSSL 1.0.2k-fips 26 Jan 2017 |
| TLS SNI support enabled |
| configure arguments: --prefix=/usr/share/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 --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --pid-path=/run/nginx.pid --lock-path=/run/lock/subsys/nginx --user=nginx --group=nginx --with-compat --with-debug --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_degradation_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_image_filter_module=dynamic --with-http_mp4_module --with-http_perl_module=dynamic --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-http_xslt_module=dynamic --with-mail=dynamic --with-mail_ssl_module --with-pcre --with-pcre-jit --with-stream=dynamic --with-stream_ssl_module --with-stream_ssl_preread_module --with-threads --with-stream |
| |
| 注:最后一个就是重新编译后加上的 |
| |
| 还是原来的nginx.conf,再次启动nginx就不会因为stream模块而报错 |
| [root@nginx01 ~]# systemctl start nginx |
| |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」