千家信息网

Nignx服务基础

发表于:2024-11-29 作者:千家信息网编辑
千家信息网最后更新 2024年11月29日,一、Nginx简介;概述:Nginx是一款由俄罗斯开发的开源的高性能HTTP服务器和反向代理服务器,同时支持IMAP/POP3/SMTP代理服务,其性能优势着为显著,官网上称:单台nginx服务器可以
千家信息网最后更新 2024年11月29日Nignx服务基础

一、Nginx简介;

概述:Nginx是一款由俄罗斯开发的开源的高性能HTTP服务器和反向代理服务器,同时支持IMAP/POP3/SMTP代理服务,其性能优势着为显著,官网上称:单台nginx服务器可以处理50000并发;
特点:高性能、稳定、消耗硬件资源小、能够处理大并发,主要用于静态的解析,动静页面的分离;
优势:
1.作为Web服务器,nginx处理静态文件、索引文件以及自动索引效率非常高。
2.作为代理服务器,Nginx可以实现无缓存的反向代理加速,提高网站运行速度。
3.作为负载均衡服务器,Nginx既可以在内部直接支持Rails和PHP,也可以支持HTTP代理服务器,对外进行服务。同时支持简单的容错和利用算法进行负载均衡。

二.安装nginx程序

(1)安装支持软件
Nginx的配置以及运行需要pcre、zlib等软件包的支持。
yum install gcc gcc-c++ pcre-devel zlib-devel
(2)创建运行用户组
Nginx服务程序默认以nobody身份运行,建议创建专门的用户账号,以便更准确控制器访问权限,怎加灵活性,安全、降低风险。
useradd -M -s /sbin/nologin nginx
(3)编译安装Nginx

root@localhost opt]# cd nginx-1.12.0/[root@localhost nginx-1.12.0]#./configure \--prefix=/usr/local/nginx \  #安装目录 --user=nginx \                                  #运行用户为Nginx --group=nginx \                             #运行组为Nginx --with-http_stub_status_module     #模块以支持状态统计,便于查看服务器的信息连接 [root@localhost nginx-1.12.0]# make && make install

(4)优化路径
为了方便管理,可以为主程序ngin创建链接文件,方便直接用nginx命令直接调用nginx主程序

ln -s /usr/local/nginx/sbin/nginx /usr/sbin/
(5)检查配置

[root@localhost ~]# nginx -tnginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is oknginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful

(6)启动和停止Nginx

[root@localhost ~]# nginx  启动[root@localhost ~]# killall -s HUP nginx  #重载配置[root@localhost ~]# killall -s QUIT nginx #停止服务

(6)使用Nginx服务脚本
为了使用Nginx服务启动、停止、重载等操作更加方便,并使用chkconfig和service工具来进行管理。

[root@localhost ~]# vim /etc/init.d/nginx #!/bin/bash#chkconfig: - 99 20 description: Nginx Service Control ScriptPROG="/usr/local/nginx/sbin/nginx"PIDF="/usr/local/nginx/logs/nginx.pid"case "$1" instart)        $PROG;;stop)        kill -s QUIT $(cat $PIDF);;reload)        $0 stop        $0 start;;restart)        kill -s HUP $(cat $PIDF);;*)        echo "Usage:$0 {start|stop|restart|reload}";;esacexit 0[root@localhost ~]# chmod +x /etc/init.d/nginx[root@localhost ~]# chkconfig --add nginx

三.配置文件nginx.conf

1.全局配置

#user  nobody;  #运行用户worker_processes  1; #工作进程数量#error_log  logs/error.log;   #错误日志#error_log  logs/error.log  notice;#error_log  logs/error.log  info;#pid        logs/nginx.pid; #PID文件的位置

2.I/O事件配置
使用"event{}"定界表记,用来指定Nginx的进程的I/O响应模型,每个进程的连接数设置。

events {    worker_connections  1024;   #每个进程处理4096个连接}

3.HTTP配置
使用"http{}"界定标记包括访问日志,HTTP端口、页面目录、默认字符集、连接保持、以及虚拟Web主机、PHP解析等一系列设置。其中大部分配置语句包含在界定标记"server{}"内

http {    include       mime.types;    default_type  application/octet-stream;    sendfile        on;    keepalive_timeout  65;#保持连接超时        #access_log  logs/access.log  main;    #gzip  on;    server { #Web服务的监听配置        listen 192.168.242.220:80;#监听地址端口        server_name  192.168.242.220:80;#网站名称        charset utf-8;#网页的默认字符集        access_log  logs/www.kgc.com.host.access.log;#访问日志位置        location / {  #根目录配置            root /var/www/html/kgc; #网站跟目录的位置            index  index.html index.htm;#默认网页(索引页)        }        error_page   500 502 503 504  /50x.html; #内部错误的反馈页面        location = /50x.html {   #错误页面配置            root   html;        }    }

3.访问状态统计
Nginx内置了HTTP_STUB_STATUS状态统计模块,用来反馈当前的Web访问情况,配置编译数时可以怎加--with-http_stub_status_mdule来开启此模块支持

要使用nginx的状态统计功能,除了启用内建模块以外,还需要修改nginx.conf配置文件。指定访问位置并添加stub_status
location / {            stub_status on;#打开状态统计功能            access_log off;#关闭此位置的日志记录            root /var/www/html/kgc;            index  index.html index.htm;        }

Nginx访问控制

基于授权的访问控制步骤
1.使用htpasswd生成用户认证文件,如果没有该命令,可使用yun安装httpd-tools软件包

[root@localhost ~]#htpasswd /usr/local/nginx/passwd.db jiji #在/usr/local/nginx目录生成passwd.db文件,用户名为jiji,密码输入两次。在passwd.db中生成用户和密码的密文

2.修改密码文件的权限为400,将所有者改为nginx

[root@localhost ~]# chmod 400 /usr/local/nginx/passwd.db [root@localhost ~]# chown nginx /usr/local/nginx/passwd.db

3.修改主配置文件nginx.conf 添加相应认证配置项

location / {            stub_status on;#打开状态统计功能            access_log off;#关闭此位置的日志记录            root /var/www/html/kgc;            index  index.html index.htm;            auth_basic "secret";#添加认证配置            auth_basci_user_file /usr/loacl/nginx/passwd.db        }

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

location / {            stub_status on;            access_log off;            root /var/www/html/kgc;            index  index.html index.htm;             deny 192.169.10.10; #客户端IP             allow all;        }

Nginx虚拟主机

每个虚拟Web站点拥有独立的server{}配置端,各自监听的ip地址 端口号可以单独指定,网络名称不同
1.基于IP的虚拟主机
2.基于域名的虚拟主机
3.基于端口的虚拟主机

基于域名虚拟主机设置
server { #加入www.kgc.com对应的站点        listen       80;          server_name  www.kgc.com; #监听地址        charset utf-8;        access_log  logs/www.kgc.com.host.access.log;        location / {            root /var/www/html/kgc; #www.kgc.com工作目录            index  index.html index.htm;        }        error_page   500 502 503 504  /50x.html;        location = /50x.html {            root   html;        }    }server { #加入www.accp.com 对应的站点        listen       80;         server_name  www.accp.com;#监听地址        charset utf-8;        access_log  logs/www.accp.com.host.access.log;        location / {            root /var/www/html/accp; #工作目录            index  index.html index.htm;        }        error_page   500 502 503 504  /50x.html;        location = /50x.html {            root   html;        }        }

基于ip地址

server {        listen 192.168.242.220:80; #监听192.168.242.220        server_name  192.168.242.220:80;         charset utf-8;        access_log  logs/www.kgc.com.host.access.log;        location / {            root /var/www/html/kgc;            index  index.html index.htm;        }        error_page   500 502 503 504  /50x.html;        location = /50x.html {            root   html;        }    }server {        listen 192.168.242.167:80;        server_name  192.168.242.167:80; #监听192.168.242.167        charset utf-8;        access_log  logs/www.accp.com.host.access.log;        location / {            root /var/www/html/accp;            index  index.html index.htm;        }        error_page   500 502 503 504  /50x.html;        location = /50x.html {            root   html;        }        }

基于端口

server {        listen 192.168.242.220:80;        server_name  192.168.242.220:80;        charset utf-8;        access_log  logs/www.kgc.com.host.access.log;        location / {            root /var/www/html/kgc;            index  index.html index.htm;        }        error_page   500 502 503 504  /50x.html;        location = /50x.html {            root   html;        }    }    server {        listen 192.168.242.220:8080;        server_name  192.168.242.220:8080;        charset utf-8;        access_log  logs/www.accp.com.host.access.log;        location / {            root /var/www/html/accp;            index  index.html index.htm;        }        error_page   500 502 503 504  /50x.html;        location = /50x.html {            root   html;        }        }
0