编译安装nginx服务

这篇具有很好参考价值的文章主要介绍了编译安装nginx服务。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

编译安装nginx服务

1.关闭防火墙,将安装nginx所需软件包传到/opt目录下

2.安装依赖包

3.创建运行用户、组(Nginx服务程序默认以nobody身份运行,建议为其创建专门的用户账号,以便更准确的控制访问权限)

4.编译安装Nginx

5.检查、启动、重启、停止nginx服务

6.添加Nginx系统服务

--------认识Nginx服务的主配置文件 nginx.conf--------

1.全局配置

2.I/O 事件配置

3.HTTP 配置

日志格式设定:

--------访问状态统计配置--------

1.先使用命令/usr/local/nginx/sbin/nginx -V 查看已安装的 Nginx 是否包含 HTTP_STUB_STATUS 模块

2.修改 nginx.conf 配置文件,指定访问位置并添加 stub_status 配置

3.重启服务,访问测试

--------基于授权的访问控制--------

1.生成用户密码认证文件

2.修改主配置文件相对应目录,添加认证配置项

3.重启服务,访问测试

--------基于客户端的访问控制--------

--------基于域名的 Nginx 虚拟主机--------

1.为虚拟主机提供域名解析

2.为虚拟主机准备网页文档

3.修改Nginx的配置文件

4.重启服务,访问测试

--------基于IP 的 Nginx 虚拟主机--------

--------基于端口的 Nginx 虚拟主机--------


编译安装nginx服务

1.关闭防火墙,将安装nginx所需软件包传到/opt目录下

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

nginx-1.24.0.tar.gz

2.安装依赖包

#indinx的配置及运行需要

yum -y install prce zlib openssl-devel gcc gcc-c++ make

3.创建运行用户、组(Nginx服务程序默认以nobody身份运行,建议为其创建专门的用户账号,以便更准确的控制访问权限)

useradd -M -s /sbin/nologin nginx

4.编译安装Nginx

cd /opt
tar zxvf nginx-1.21.0.tar.gz -C /opt/
cd nginx-1.21.0/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
make && make install
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/       #让系统识别nginx的操作命令

5.检查、启动、重启、停止nginx服务

nginx -t             #检查配置文件是否配置正确

编译安装nginx服务

#启动

nginx

#停止

cat /usr/local/nginx/logs/nginx.pid

编译安装nginx服务

kill -3 <PID号>

kill -s QUIT <PID号>

killall  -3 nginx

killall  -s QUIT nginx

make upqrade   #要保证当前nginx进程是通过/usr/local/nginx/sbin/nginx启动的,而不是通过查找环境变量中那个nginx命令启动的

#或者先killall  nginx,再/usr/local/nginx/sbin/nginx

6.添加Nginx系统服务

方法一:

#!/bin/bash
#chkconfig:35 22 88
#desc: this is nginx service control scprit

CMD="/usr/local/nginx/sbin/nginx"
PIDFILE="/usr/local/nginx/logs/nginx.pid"
COUNT=$(ps -ef | egrep -v "service|grep|$$" | grep -c "nginx" )

case "$1" in
start)
#netstat -lntp l grep nginx
#if [$?-eq 0 ]
#ps -ef l egrep -v "grep|$$” l grep  "nginx"

if [ $COUNT -ge 1 ]
then
echo "Nginx 已经启动....."
else
echo "Nginx 正在启动....."
$CMD
fi
;;
stop)
kill -s QUIT $(cat $PIDFILE)
;;
restart)
s0 stop
$0 start
;;
reload)
kill -s HUP $(cat $PIDFILE)
;;
status)
#if killall -0 nginx &> /dev/null
if [ $COUNT -ge 1 ]
then
echo "Nginx is running......"
fi

编译安装nginx服务

 方法二:

cd /usr/lib/systemd/system/nginx.service

编译安装nginx服务

[Unit]:服务的说明
Description:描述服务
After:依赖,当依赖的服务启动之后再启动自定义的服务

[Service]服务运行参数的设置
Type=forking是后台运行的形式,使用此启动类型应同时指定PIDFile=,以便systemd能够跟踪服务的主进程。
ExecStart为服务的具体运行命令
ExecReload为重启命令
ExecStop为停止命令
PrivateTmp=True表示给服务分配独立的临时空间
注意:启动、重启、停止命令全部要求使用绝对路径

[Install]服务安装的相关设置,可设置为多用户

chmod 754 /lib/systemd/system/nginx.service
 cd /etc/init.d

把之前的脚本改名字和删除都可以

然后重启

reboot
systemctl stop httpd

就可以用systemctl指令了

systemctl start nginx

编译安装nginx服务

--------认识Nginx服务的主配置文件 nginx.conf--------

1、全局块:全局配置,对全局生效;
2、events块:配置影响 Nginx 服务器与用户的网络连接;
3、http块:配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置;
4、server块:配置虚拟主机的相关参数,一个 http 块中可以有多个 server 块;
5、location块:用于配置匹配的 uri ;
6、upstream:配置后端服务器具体地址,负载均衡配置不可或缺的部分。

vim /usr/local/nginx/conf/nginx.conf 

1.全局配置

#user nobody;                         #运行用户,若编译时未指定则默认为 nobody
worker_processes 1;               #工作进程数量,一般设置为和 CPU 核数一样;设置为auto,nginx将会自己获取这个数值
#error_log logs/error.log;         #错误日志文件的位置
#pid logs/nginx.pid;                 #PID 文件的位置
worker_rlimit_nofile 60000;     #设置所有worker进程最大可以打开的文件数,默认为1024

2.I/O 事件配置

events {
    use epoll;                                  #使用 epoll I/O模型,2.6及以上版本的系统内核,建议使用epoll模型以提高性能
    worker_connections 60000;     #每个进程处理 60000 个连接
    multi_accept on;                       #是否一次性将监听到的连接全接收进来,默认为off,关闭时一次接收一条连接
    accept_mutex on;                    #默认为on,开启时表示以串行方式接入新连接,否则将通报给所有worker。这可能会浪费资源并产生不可预计的后果,例如惊群问题
}
#如提高每个进程的连接数还需执行“ulimit -n 65535”命令临时修改本地每个进程可以同时打开的最大文件数。
#在Linux平台上,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。
#可使用ulimit -a命令查看系统允许当前用户进程打开的文件数限制。
#epoll是Linux内核为处理大批句柄而作改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著的减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。
#worker_processes的值和work_connections的值决定了最大并发数量,最大并发数计算方式为:worker_processes*worker_connections。但在反向代理场景中计算方法不同,因为nginx既要维持和客户端的连接,又要维持和后端服务器的连接,因此处理一次连接要占用2个连接,所以最大并发数计算方式为:worker_processes*worker_connections/2。

3.HTTP 配置

http {
    ##文件扩展名与文件类型映射表
    include       mime.types;
    ##默认文件类型
    default_type  application/octet-stream;
    ##日志格式设定
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';
    ##访问日志位置
    #access_log  logs/access.log  main;
    ##开启文件传输模式
    sendfile        on;
    ##只在sendfile on时有效。调用tcp_cork方法,让数据包不会马上传送出去,等到数据包最大时,一次性的传输出去,这样有助于解决网络堵塞。默认为off。
    #tcp_nopush     on;
    ##连接保持超时时间,单位是秒
    #keepalive_timeout  0;
    keepalive_timeout  65;
    ##gzip模块设置,设置是否开启gzip压缩输出
    #gzip  on;
    
    ##Web 服务的监听配置
    server {
        ##监听地址及端口
        listen 80; 
        ##站点域名,可以有多个,用空格隔开
        server_name www.kgc.com;
        ##网页的默认字符集
        charset utf-8;
        ##根目录配置
        location / {
            ##网站根目录的位置/usr/local/nginx/html
            root html;
            ##默认首页文件名
            index index.html index.php;
        }
        ##内部错误的反馈页面
        error_page 500 502 503 504 /50x.html;
        ##错误页面配置
        location = /50x.html {
            root html;
        }
    }
}
 

日志格式设定:

$remote_addr与$http_x_forwarded_for用以记录客户端的ip地址;
$remote_user:用来记录客户端用户名称;
$time_local: 用来记录访问时间与时区;
$request: 用来记录请求的url与http协议;
$status: 用来记录请求状态;成功是200,
$body_bytes_sent :记录发送给客户端文件主体内容大小;
$http_referer:用来记录从哪个页面链接访问过来的;
$http_user_agent:记录客户浏览器的相关信息;
通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,通过$remote_add拿到的IP地址是反向代理服务器的iP地址。反向代理服务器在转发请求的http头信息中,可以增加x_forwarded_for信息,用以记录原有客户端的IP地址和原来客户端的请求的服务器地址。

location常见配置指令,root、alias、proxy_pass
root(根路径配置):root /var/www/html
请求www.kgc.com/test/1.html,会返回文件/var/www/html/test/1.html

alias(别名配置):alias /var/www/html
请求www.kgc.com/test/1.html,会返回文件/var/www/html/1.html

proxy_pass(反向代理配置)

--------访问状态统计配置--------

1.先使用命令/usr/local/nginx/sbin/nginx -V 查看已安装的 Nginx 是否包含 HTTP_STUB_STATUS 模块  

cat /opt/nginx-1.12.0/auto/options | grep YES     #可查看 nginx 已安装的所有模块

编译安装nginx服务

 编译安装nginx服务

2.修改 nginx.conf 配置文件,指定访问位置并添加 stub_status 配置

cd /usr/local/nginx/conf
cp nginx.conf nginx.conf.bak
vim /usr/local/nginx/conf/nginx.conf
......
http {
......
	server {
		listen 80;
		server_name www.kgc.com;
		charset utf-8;
		location / {
			root html;
			index index.html index.php;
		}	
##添加 stub_status 配置##
		location /status { 					#访问位置为/status
			stub_status on; 				#打开状态统计功能
			access_log off; 				#关闭此位置的日志记录
		}

编译安装nginx服务

3.重启服务,访问测试

 systemctl restart nginx

浏览器访问 http://192.168.110.60/status
Active connections:表示当前的活动连接数,即当前与 Nginx 服务器建立的连接数。
server accepts handled requests :表示已经处理的连接信息
三个数字依次表示服务器已接收的连接数;服务器成功处理的连接数;服务器累计处理的总请求数(在保持连接模式下,请求数量可能会大于连接数量)
Reading:表示当前正在从客户端读取数据的连接数。
Writing:表示当前正在向客户端写入数据的连接数。
Waiting:表示当前空闲并等待请求的连接数。

编译安装nginx服务

 可 curl -Ls http://192.168.110.60/status 结合 awk与if 语句进行性能监控。编译安装nginx服务编译安装nginx服务

编译安装nginx服务

--------基于授权的访问控制--------

1.生成用户密码认证文件

yum install -y httpd-tools
htpasswd -c /usr/local/nginx/passwd.db zhangsan
chown nginx /usr/local/nginx/passwd.db
chmod 400 /usr/local/nginx/passwd.db

2.修改主配置文件相对应目录,添加认证配置项

vim /usr/local/nginx/conf/nginx.conf
......
    server {
        location / {
            ......
            ##添加认证配置##
            auth_basic "secret";                #设置密码提示框文字信息
            auth_basic_user_file /usr/local/nginx/passwd.db;
        }
    }

编译安装nginx服务

3.重启服务,访问测试

nginx -t
systemctl restart nginx

浏览器访问 http://192.168.110.60/status编译安装nginx服务

--------基于客户端的访问控制--------

访问控制规则如下:
deny IP/IP 段:拒绝某个 IP 或 IP 段的客户端访问。
allow IP/IP 段:允许某个 IP 或 IP 段的客户端访问。
规则从上往下执行,如匹配则停止,不再往下匹配。

vim /usr/local/nginx/conf/nginx.conf
......
    server {
        location / {
            ......
            ##添加控制规则##
            allow 192.168.110.100;                     #允许访问的客户端 IP
            deny all;                                #拒绝其它IP客户端访问
        }
    }

编译安装nginx服务

systemctl restart nginx

 编译安装nginx服务

--------基于域名的 Nginx 虚拟主机--------

1.为虚拟主机提供域名解析

echo "192.168.110.60 www.kgc.com www.benet.com" >> /etc/hosts

2.为虚拟主机准备网页文档

mkdir -p /var/www/html/benet
mkdir -p /var/www/html/kgc
echo "<h1>www.kgc.com</h1>" > /var/www/html/kgc/index.html
echo "<h1>www.benet.com</h1>" > /var/www/html/benet/index.html

3.修改Nginx的配置文件

vim /usr/local/nginx/conf/nginx.conf
......
http {
......
    server {
        listen 80;
        server_name www.kgc.com;                    #设置域名www.kgc.com
        charset utf-8;
        access_log logs/www.kgc.access.log;         #设置日志名
        location / {
            root /var/www/html/kgc;                    #设置www.kgc.com 的工作目录
            index index.html index.php;
        }
        error_page 500 502 503 504 /50x.html;
        location = 50x.html{
            root html;
        }
    }
    
    server {
        listen 80;
        server_name www.benet.com;                    #设置域名www.benet.com
        charset utf-8;
        access_log logs/www.benet.access.log; 
        location / {
            root /var/www/html/benet;
            index index.html index.php;
        }
        error_page 500 502 503 504 /50x.html;
        location = 50x.html{
            root html;
        }
    }    
}

4.重启服务,访问测试

systemctl restart nginx

浏览器访问
http://www.kgc.com
http://www.benet.com编译安装nginx服务

 编译安装nginx服务

--------基于IP 的 Nginx 虚拟主机--------

ifconfig ens33:0 192.168.110.50 netmask 255.255.255.0 
vim /usr/local/nginx/conf/nginx.conf
......
http {
......
    server {
        listen 192.168.80.10:80;                    #设置监听地址192.168.80.10
        server_name www.kgc.com;
        charset utf-8;
        access_log logs/www.kgc.access.log; 
        location / {
            root /var/www/html/kgc;
            index index.html index.php;
        }
        error_page 500 502 503 504 /50x.html;
        location = 50x.html{
            root html;
        }
    }
    
    server {
        listen 192.168.80.11:80;                    #设置监听地址192.168.80.11
        server_name www.benet.com;
        charset utf-8;
        access_log logs/www.benet.access.log; 
        location / {
            root /var/www/html/benet;
            index index.html index.php;
        }
        error_page 500 502 503 504 /50x.html;
        location = 50x.html{
            root html;
        }
    }    
}
systemctl restart nginx

浏览器访问
http://192.168.110.60
http://192.168.110.50

--------基于端口的 Nginx 虚拟主机--------

vim /usr/local/nginx/conf/nginx.conf
......
http {
......
    server {
        listen 192.168.110.60:8080;                    #设置监听 8080 端口
        server_name www.kgc.com;
        charset utf-8;
        access_log logs/www.kgc.access.log; 
        location / {
            root /var/www/html/kgc;
            index index.html index.php;
        }
        error_page 500 502 503 504 /50x.html;
        location = 50x.html{
            root html;
        }
    }
    
    server {
        listen 192.168.110.60:8888;                    #设置监听 80端口
        server_name www.benet.com;
        charset utf-8;
        access_log logs/www.benet.access.log; 
        location / {
            root /var/www/html/benet;
            index index.html index.php;
        }
        error_page 500 502 503 504 /50x.html;
        location = 50x.html{
            root html;
        }
    }    
}

编译安装nginx服务
编译安装nginx服务

systemctl restart nginx

 浏览器访问
http://192.168.110.60:8080
http://192.168.110.60:80编译安装nginx服务

编译安装nginx服务文章来源地址https://www.toymoban.com/news/detail-467737.html

到了这里,关于编译安装nginx服务的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • nginx根据二级目录转发服务以及带/和不带/的区别

    在nginx中配置proxy_pass代理转发时,如果在proxy_pass后面的url加/,表示绝对根路径;如果没有/,表示相对路径,把匹配的路径部分也给代理走。具体实例如下 1.配置文件location带/且proxy_pass带/ 即如果访问test.htjs.net/service/xxx.html 实际访问的是后端服务http://192.168.1.51:8080/xxx.html 2

    2024年04月17日
    浏览(10)
  • 通过nginx访问服务器指定目录下图片资源

    实现步骤: 1、创建文件夹并且上传图片 2、查看nginx进程 ps -ef | grep nginx    3、修改nginx配置文件 根据步骤2查看nginx安装目录;(通常nginx安装目录为 cd /usr/local/nginx/) 如果自定义的安装目录则根据实际情况而定 进入到nginx安装目录下:  1、cd /usr/local/nginx/ 2、cd conf 3、vim

    2024年02月15日
    浏览(17)
  • 如何在Linux中查找Nginx安装目录

    which命令会在系统环境变量PATH中查找nginx可执行文件,并返回路径。因此,通过which命令可以很容易地找到系统中nginx的安装位置。 whereis命令会在默认的库文件目录、二进制文件目录、指定目录等位置查找nginx,并返回所有相关文件、路径信息。其中,“/usr/sbin/nginx”是nginx可

    2024年02月07日
    浏览(21)
  • Centos7安装编译ffmpeg到指定目录

    1、官网下载tar包 2、解压usr/local目录 3、编译准备 4、安装设置 5、编译安装 6、修改文件/etc/ld.so.conf 输入  ldconfig  使修改生效 7、查看ffmpeg版本 8、配置系统变量 打开配置文件 vi /etc/profile 在export PATH之后添加: 1、下载静态安装包  John Van Sickle - FFmpeg Static Builds 安装到:/u

    2024年02月12日
    浏览(33)
  • nginx简介与安装配置,目录结构和配置文件介绍,配置nginx的service管理

    目录 一.nginx简介 1.简介 2.特性 二.nginx安装 1.rpm包方式 (1)下载扩展源 (2)安装扩展rpm包,nginx -V查看配置参数,后面源码安装时要用到 (3)默认的配置文件位置和html存放位置 2.源码方式 (1)建议提前下好所需要的部分包 (2)下载tar.gz包 (3)建议将包解压到/usr/local

    2024年02月04日
    浏览(13)
  • PHP - Laravel 创建项目到服务器(nginx、apache)运行(附带目录结构

    // 对应 composer.json 中的 require,一般用这个 $ composer require barryvdh/laravel-ide-helper // 如果只想在开发环境安装请加上 --dev,对应 composer.json 中的 require-dev $ composer require barryvdh/laravel-ide-helper --dev 如果报错 Installation failed, reverting ./composer.json and ./composer.lock to their original content 点这

    2024年04月27日
    浏览(16)
  • haproxy服务器对nginx服务器web服务调度负载均衡、用nfs做共享目录(脚本部署)

    目录 一、准备 二、在作为haproxy的服务器上导入以下shell执行haproxy安装 三、由于nginx服务需要用的nfs共享目录,先部署nfs 四、nginx服务器1部署 五、nginx服务器2部署同上 六、测试 一、准备 四台服务器 系统 IP 搭建服务器 centos7 192.168.1.12 haproxy centos7 192.168.1.132 nfs(rpcbind) ce

    2024年02月09日
    浏览(12)
  • [NGINX] NGINX下载、安装编译、启动检查停止命令

    ①在线安装依赖: ②下载依赖到本地安装依赖: 建议内网先下载安装包和依赖通过介质拷贝至系统; 注:编译后会在安装目录的同层(/soft/nginx/)生成nginx应用目录,相关配置、启动在此层。而不是在安装目录下一层(/soft/nginx/nginx-1.21.6/)或者使用whereis nginx查看软件目录,

    2024年02月15日
    浏览(17)
  • CentOS 编译安装 nginx

    修改 yum 源地址为 阿里云 升级内核和软件 安装常用软件和依赖 创建用户用户组 下载并编译安装 下载 解压 进入nginx源代码目录 预编译 验证 是否 成功 编译 验证 是否 成功 安装 验证 是否 成功 ls 以下为验证程序步骤可忽略 编写启动脚本 防火墙开放端口 –zone 作用域 –ad

    2024年02月08日
    浏览(19)
  • nginx上web服务的基本安全优化、服务性能优化、访问日志优化、目录资源优化和防盗链配置简介

    目录 一.基本安全优化 1.隐藏nginx软件版本信息 2.更改源码来隐藏软件名和版本 (1)修改第一个文件(核心头文件),在nginx安装目录下找到这个文件并修改 (2)第二个文件 (3)第三个文件,内置响应信息页面 (4)第四个文件 (5)重新编译安装并重启 3.更改nginx服务的默

    2024年02月13日
    浏览(13)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包