Ubuntu之源码编译安装nginx

一、nginx简介

  Nginx是一个高性能的HTTP和反向代理web服务器,同时也是一个IMAP/POP3/SMTP代理服务器。它是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。Nginx的特点是支持大量的并发连接,并且内存消耗小,CPU占用率低,性能稳定,所以在上线上部署的时候,即使是几万的并发也能扛得住。并且Nginx在功能上也十分丰富,不仅是一个优秀的Web服务器,还可以作为反向代理、负载均衡器及邮件代理服务器。此外,它还支持FastCGI、SSL、Virtual Host、URL重写、Gzip等功能,并且支持模块扩展,可以与许多高性能的模块一起编译,打造高性能Web服务器。博主实验环境说明:

  • 操作系统:Ubuntu 22.04 LTS
  • nginx版本:1.25.4

二、安装步骤

1、下载安装包

  通过官网下载最新版本的软件包,当前最近版本是nginx-1.25.4。Ubuntu系统环境通过apt-get install也可以安装,安装的版本是1.18.0,如果需要安装最新版我们就需要通过源码编译安装。

root@jj100:/usr/local#
root@jj100:/usr/local# wget http://nginx.org/download/nginx-1.25.4.tar.gz
从官网下载,下载地址http://nginx.org/download/
在这里插入图片描述

2、解压安装包

root@jj100:/usr/local# tar -zxvf nginx-1.25.4.tar.gz

3、安装pcre依赖包

  安装pcre依赖包,Ubuntu系统和centos系统报名还不一样,Ubuntu下安装pcre依赖包使用apt-get install libpcre3-dev。

root@jj100:/usr/local# apt-get install libpcre3-dev

4、安装OpenSSL依赖

  如果需要nginx支持https,则需要安装openssl依赖

root@jj100:/usr/local/nginx-1.25.4# apt-get install openssl libssl-dev
在这里插入图片描述

5、预编译

  使用./configure直接编译不会添加ssl模块,我们可以使用如下方式添加ssl模块到预编译中。

root@jj100:/usr/local/nginx-1.25.4# ./configure --prefix=/usr/local/nginx --with-http_ssl_module

6、编译

root@jj100:/usr/local/nginx-1.25.4# make

7、编译安装

root@jj100:/usr/local/nginx-1.25.4# make install

8、查看版本

root@jj100:/usr/local/nginx# ./sbin/nginx -v
nginx version: nginx/1.25.4

9、创建软连接

  创建命令软连接到/usr/bin下,如果没有创建则无法当成命令使用,需要添加环境变量或者切换到指定目录下启动或者管理nginx服务。

root@jj100:/usr/local/nginx# ln -s /usr/local/nginx/sbin/nginx /usr/bin/

10、启动nginx

root@jj100:/usr/local/nginx-1.25.4# nginx

11、访问nginx

  通过浏览器访问nginx连接地址http://1.12.65.45,可以看到Welcome to nginx!说明nginx安装成功。
在这里插入图片描述

12、添加ngx_http_geoip2_module模块

  参照博文Nginx之IP国家代码ngx_http_geoip2_module模块简介和使用,静态编译ngx_http_geoip2_module模块到nginx中。

root@jj100:/usr/local/nginx-1.25.4# nginx -V
nginx version: nginx/1.25.4
built by gcc 11.2.0 (Ubuntu 11.2.0-19ubuntu1)
built with OpenSSL 3.0.2 15 Mar 2022
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx --with-http_ssl_module --add-module=/usr/local/ngx_http_geoip2_module-master

13、基于ngx_http_geoip2_module模块查询出口公网IP地址

  搭建好了公网IP地址查询接口服务之后我们就可以使用浏览器访问域名地址或者linux系统下使用curl命令查询主机出口的公网IP地址。

root@jj100:/usr/local/nginx# curl https://love.sun-site.com/myip
1.12.65.45 CN AS

三、QA

1、nginx -t检查配置的时候报错找不到nginx用户

  • 报错信息:nginx: [emerg] getpwnam(“nginx”) failed in /usr/local/nginx/conf/nginx.conf:1
  • 报错原因:没有创建nginx账户
  • 解决方案:创建一个不用于登录的nginx账户

# useradd -s /sbin/nologin -M nginx

2、nginx -t检查配置报错找不到的日志格式

  • 报错信息:nginx: [emerg] unknown log format “main” in /usr/local/nginx/conf/conf.d/love.sun-site.com.conf:19
  • 报错原因:在http模块中配置日志格式
  • 解决方案:在nginx.conf配置文件中添加log_format内容
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"'
                      '"$upstream_addr" "$http_host"';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

恒悦sunsite

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值