Nginx搭建与优化

Nginx简介 Nginx 是开源、高性能、高可靠的 Web 和反向代理服务器,而且支持热部署,几乎可以做到 7 * 24 小时不间断运行,即使运行几个月也不需要重新启动,还能在不间断服务的情况下对软件版本进行热更新。高性能:其占用内存少、并发能力强、能支持高达 5w 个并发连接数。

编译安装nginx服务

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# systemctl disable firewalld
[root@localhost ~]# setenforce 0
​
[root@localhost ~]# yum install -y gcc pcre-devel zlib-devel gcc-c++ make
[root@localhost ~]# useradd -M -s /sbin/nologin nginx
[root@localhost ~]# tar -xf nginx-1.20.2.tar.gz 
[root@localhost ~]# cd nginx-1.20.2/
root@localhost  nginx-1.20.2]# ./configure \
> --prefix=/usr/local/nginx \              #指定安装路径
> --user=nginx \                           #指定用户
> --group=nginx \                          #指定组
> --with-http_ssl_module \                 #开启SSL加密功能
> --with-http_stub_status_module\       #启用http_stub_status_module 模块以支持状态统计
> --with-stream                            #启用四层反向代理
[root@localhost  nginx-1.20.2]# make && make install    #编译并安装
ln -s  /usr/local/nginx/sbin/nginx  /usr/local/sbin/  #让系统识别nginx命令
nginx                                         #启动服务
nginx -s stop                                 #关闭服务
nginx -s reload                               #重新加载配置文件
nginx -v                                      #查看软件信息

新版本升级:

tar -xf nginx-1.xx.xx.tar.gz                    #解压新版本nginx安装包
cd nginx-1.xx.xx                                #进入目录
./configure\
--prefix=/usr/local/nginx \
--user=nginx\
--group=nginx \
--with-http_stub_status_module \                  #加入新的模块
--with-http_ssl_module
make
mv /usr/local/nginx/sbin/nginx  /usr/local/nginx/sbin/nginx_old   #备份nginx老版本主程序
cp objs/nginx  /usr/local/nginx/sbin/nginx      #使用编译好的新版本nginx替换老版本
make upgrade                                    #重启
#或者先 killall nginx,再/usr/local/nginx/sbin/nginx

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

•全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。

•events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。

•http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。

•server块: server块,虚拟主机(虚拟服务器)。作用:使得Nginx服务器可以在同一台服务器上只要运行一组Nginx进程,就可以运行多个网站。

•location块: location块是server块的一个指令。作用:基于Nginx服务器接收到的请求字符串,虚拟主机名称(ip,域名)、url匹配,对特定请求进行处理。

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf

•全局块:
#user  nobody;                     #运行用户
worker_processes 1;                #工作进程数,可配置成服务器内核数*2,如果网站访问量不大,一般设为1就够用了
#error_log  logs/error.log;        #错误日志文件的位置
#pid        logs/nginx.pid;        #PID文件的位置
•events块:
events {
    use epoll;             #使用 epoll 模型以提高性能,2.6 以上版本建议使用
    worker_connections  1024;   #每个进程处理1024个连接
}
#如提高每个进程的连接数还需执行"ulimit -n 65535"命令临时修改本地每个进程可以同时打开的最大文件数。
•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;             #开启高效传输模式
    #tcp_nopush     on;
    
    #keepalive_timeout  0;
     keepalive_timeout  65;        #连接保持超时时间,单位是秒
    
    #gzip  on;                     #gzip模块设置,设置是否开启gzip压缩输出
​
•server块+location块:
 server {
        listen       80;#监听地址及端口
        server_name  localhost;#站点域名,可以有多个,用空格隔开
​
        #charset utf-8;    #网页的默认字符集
​
        #access_log  logs/host.access.log  main;
​
        location / {
            root   html;          #网站根目录的位置/usr/local/nginx/html
            index  index.html index.htm;          #默认首页文件名
        }
​
        #error_page  404              /404.html;
​
        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;    #内部错误的反馈页面
        location = /50x.html {                      #错误页面配置
            root   html;
        }
访问状态统计配置
nginx 内置了 HTTP_STUB_STATUS 状态统计模块,用来反馈当前的 Web 访问情况, 配置编译参数时可添加--with-http_stub_status_module 来启用此模块支持,可以使用命令
​
可以使用命令nginx –v 查看已安装的 Nginx 是否包含 HTTP_STUB_STATUS 模块。
​
操作步骤:
​
修改 nginx.conf 配置文件,指定访问位置并添加 stub_status 配置
 
        location /status {  ##访问位置为/status
            stub_status on;  ##打开状态统计功能
            access_log off;  ##关闭此位置的日志记录
        }
 
授权密码的访问控制
 
#设置密码文件
htpasswd -c /usr/local/nginx/passwd.db zhangsan
htpasswd /usr/local/nginx/passwd.db lisi   #第二个用户不用加-c,会覆盖
chown nginx /usr/local/nginx/passwd.db
chmod 400 /usr/local/nginx/passwd.db
​
         location /status { 
           #添加密码认证
           auth_basic "secret";
           auth_basic_user_file /usr/local/nginx/passwd.db;
           
           # stub_status on;
           # access_log off;
            root   html;
            index  index.html index.htm;
        }
 

虚拟主机

利用虚拟主机,不用为每个要运行的网站提供一台单独的 Nginx 服务器或单独运行一 组 Nginx 进程,虚拟主机提供了在同一台服务器,同一组 Nginx 进程上运行多个网站的功 能。跟 Apache 一样,Nginx 也可以配置多种类型的虚拟主机,分别是基于 IP 的虚拟主机、 基于域名的虚拟主机、基于端口的虚拟主机。 使用 Nginx 搭建虚拟主机服务器时,每个虚拟 Web 站点拥有独立的“server{}”配置段, 各自监听的 IP 地址、端口号可以单独指定,当然网站名称也是不同的。

基于域名、端口、IP 的虚拟主机的配置
•域名
​
vim /usr/local/nginx/conf/nginx.conf
 
    server {
        listen       80;
        server_name  www.kgc.com;   #可以此域名访问网页
​
若域名无法使用,需要修改/etc/hosts配置文件或做Dns域名解析
​
​
•IP  #可以不同ip访问不同网页
vim /usr/local/nginx/conf/nginx.conf
​
server {
        listen   192.168.64.20:80;
        server_name  localhost;
        
        
server {
        listen   192.168.64.30:80;
        server_name  www.benet.com;
​
​
•端口
vim /usr/local/nginx/conf/nginx.conf
​
#可以此ip+不同端口访问不同网页
server {
        listen   192.168.59.108:80;
        server_name  localhost;
        
        
server {
        listen   192.168.64.10:8080;
        server_name  localhost;
​
​
​
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值