Nginx网站服务

目录

一、Nginx 概述

1、什么是 Nginx

2、Nginx并发连接

3、Nginx 应用场景

4、nginx的HTTP七层代理和四层代理

5、反向代理

二、Nginx和Apache的差异

三、编译安装Nginx服务

四、Nginx平滑升级1.15.9—>1.22.0

五,认识nginx服务的主配置文件


一、Nginx 概述

1、什么是 Nginx

一款高性能、轻量级Web服务软件

稳定性高
系统资源消耗低
对HTTP并发连接的处理能力高
单台物理服务器可支持30 000~50 000个并发请求

2、Nginx并发连接

NG并发连接能力受以下二个因素的影响:

CPU个数
本地物理服务器系统的最大文件打开数

3、Nginx 应用场景

静态服务器(图片,视频服务)
动态服务
反向代理,负载均衡
缓存服务

4、nginx的HTTP七层代理和四层代理

nginx的http七层代理,其实它工作在OSI七层模型的应用层。由于其可以解析http协议,我们可以根据URI进行请求的分发,具有很大的灵活性,但是协议的解析存在性能的消耗。为了能获取更高的代理性能,nginx支持了四层代理,即传输层,就是我们常说的TCP/UDP层,没有协议解析,就是简单的TCP/UDP转发,代理性能突飞猛进,该功能依赖于ngx_http_upstream_module和ngx_stream_upstream_module,互联网公司将其作为入口代理来工作。

5、反向代理

反向代理是指用户不需要知道目标服务器的地址,也不需要在用户端做任何设定,可以直接通过访问反向代理服务器来获得目标服务器的资源。反向代理提高了内部服务器的安全,加快了对内部服务器的访问速度。

5.1 反向代理定义
反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。

同时,用户不需要知道目标服务器的地址,也无须在用户端做任何设定。反向代理服务器通常可用来作为Web加速,即使用反向代理作为Web服务器的前置机来降低网络和服务器的负载,提高访问效率。

5.2 反向代理的优点
提高了内部服务器的安全
加快了对内部服务器的访问速度
节约了有限的IP资源


二、Nginx和Apache的差异

Nginx是一个基于事件的Web服务器,Apache是一个基于流程的服务器;
Nginx所有请求都由一个线程处理,Apache单个线程处理单个请求;
Nginx避免子进程的概念,Apache是基于子进程的;
Nginx在内存消耗和连接方面更好,Apache在内存消耗和连接方面一般;
Nginx的性能和可伸缩性不依赖于硬件,Apache依赖于CPU和内存等硬件;
Nginx支持热部署,Apache不支持热部署;
Nginx对于静态文件处理具有更高效率,Apache相对一般;
Nginx在反向代理场景具有明显优势,Apache相对一般。
 

三、编译安装Nginx服务

1、关闭防火墙

 2、安装编译安装需要的软件包

yum -y install pcre-devel zlib-devel gcc gcc-c++ make

3、设置不能登录nginx的用户

useradd -M -s /sbin/nologin nginx

4、下载软件包并解压到opt文件夹下 

tar zxvf nginx-1.15.9.tar.gz

5、 编译安装

cd nginx-1.15.9/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module

 make -j3 && make install

6、 创建一个软连接把nginx映射成系统命令  并 检查下配置文件 nginx -t

 ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

nginx -t

  查看下版本号 

 (7)检查网页 nginx启动

 7.1 添加Nginx系统服务

vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecrReload=/bin/kill -s HUP $MAINPID
ExecrStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
 
chmod 754 /lib/systemd/system/nginx.service
systemctl start nginx.service
systemctl enable nginx.service

 8、赋权,重启服务并设置开机自启

chmod 754 /lib/systemd/system/nginx.service
systemctl start nginx.service
systemctl enable nginx.service

四、Nginx平滑升级1.15.9—>1.22.0

1、上传需要升级的软件包

 2、关闭nginx进程

 3、配置软件模块

tar zxf nginx-1.22.0.tar.gz

./configure \
> --prefix=/usr/local/nginx \
> --user=nginx \
> --group=nginx \
> --with-http_stub_status_module \
> --with-http_ssl_module

 

 4、编译,不安装

 yum -y install gcc openssl openssl-devel pcre-devel zlib zlib-devel
./configure
make

 

 进行编译,不要用make install ,不然会丢失数据

5、备份旧版本,用新版本覆盖过去

6、启动服务并检测版本

nginx -v

 

五,认识nginx服务的主配置文件

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

1、全局配置

#user nobody;                 #运行用户,若编译时未指定则默认为 nobody
worker_processes 1;           #工作进程数量,可配置成服务器内核数 * 2
#error_log logs/error.log;    #错误日志文件的位置
#pid logs/nginx.pid;          #PID 文件的位置

 2、I/O 事件配置

evevts{
   worker_connections 1024
 
}
 
表示每个worker可以创建多少个连接,默认为1024

 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;
	##此选项允许或禁止使用socket的TCP_CORK的选项(发送数据包前先缓存数据),此选项仅在使用sendfile的时候使用
    #tcp_nopush     on;
	##连接保持超时时间,单位是秒
    #keepalive_timeout  0;
    keepalive_timeout  65;
	##gzip模块设置,设置是否开启gzip压缩输出
    #gzip  on;
	
	

 4,server模块/location模块

##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;
		}
	}
}
#当发生错误是能够显示一个预定义的错误画面
error_page   500 502 503 504  /50x.html;
 53         location = /50x.html {     #错误页面配置
 54             root   html;
 55         }
 56 
 57         # proxy the PHP scripts to Apache listening on 127.0    .0.1:80
 58         #
 59         #location ~ \.php$ {
 60         #    proxy_pass   http://127.0.0.1;  支持PHP及跳转的配置

 5,日志格式设定

$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(反向代理配置)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值