nginx基础

Nginx 简介

nginx 是一个高性能的Web和反向代理服务器,它具有非常优越的特性
nginx 能支持高达50000个并发连接数的响应,用于高连接并发情况 使用epol and kqueue作为开发模型
nginx 作为负载均衡服务器:nginx 即可在内部直接支持和PHP程序对外进行服务,也可支持作为HTTP代理服务器对外进行服务
nginx采用C进行编写,不论系统资源开销还是CPU使用效率都比Perlbal要好

Nginx 的优点

高并发连接:官方测试能够支撑5万并发连接,在实际的生产环境中跑到2~3万的并发连接数

内存消耗少:在三万并发连接下,开启的10个nginx进程才消耗150M的内存

配置文件简单、成本低廉、支持Rewrite重写规则(能够根据域名、URL的不同 ,将HTTP请求分到不同的后端服务器群组

Nginx的基本功能

静态资源的Web服务器,能缓存打开的文件描述符
http、smtp、pop3协议的反向代理服务器
缓存加速、负载均衡 支持FastCGI (fpm,LNMP),uWSGI (Python)等 模块化
(非DSO机制),过滤器zip、SSI及图像的大小调整 支持SSL

Nginx 的扩展功能

基于名称和IP的虚拟主机
支持keepalive
支持平滑升级
定制访问日志,支持使用日志缓冲区提高日志存储性能
支持URL重写
支持路径别名
支持基于IP及用户的访问控制
支持速率限制,支持并发数限制

Nginx 的应用类别

使用nginx结合FastCGI运行的PHP、 JSP 、Perl等程序
使用nginx作反代理、负载均衡、过滤规则
使用nginx运行静态HTML网页、图片
nginx与其他新技术的结合应用

nginx的模块分类

nginx的模块从结构上分为核心模块、基础模块和第三方模块
HTTP模块、EVENT模块和MAIL模块等属于核心模块
HTTP Access模块、HTTP FastCGI模块、HTTP Proxy模块和HTTP Rewrite模块属于基本模块
HTTP Upstream模块、Request Hash模块、Notice模块和HTTP Access Key模块属于第三方模块

Nginx的安装

关闭防火墙和selinux

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0

创建系统用户

[root@localhost ~]# useradd -r -M -s /sbin/nologin nginx

安装依赖环境

#需用网络源安装依赖包。
[root@localhost ~]# yum -y install pcre-devel openssl openssl-devel gd-devel gcc gcc-c++
[root@localhost ~]# yum -y groups mark install 'Development Tools'   #安装开发包

创建日志存放目录

[root@localhost ~]# mkdir -p /var/log/nginx
[root@localhost ~]# chown -R nginx.nginx /var/log/nginx

下载nginx,编译安装

[root@localhost ~]# cd /usr/src/
[root@localhost src]# wget http://nginx.org/download/nginx-1.12.0.tar.gz
[root@localhost src]# tar xf nginx-1.12.0.tar.gz   #解压
[root@localhost src]# cd nginx-1.12.0
[root@localhost nginx-1.12.0]#  ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-debug \
--with-http_ssl_module \
--with-http_realip_module \
--with-http_image_filter_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_stub_status_module \
--http-log-path=/var/log/nginx/access.log \
--error-log-path=/var/log/nginx/error.log

[root@localhost nginx-1.12.0]# make -j $(grep 'processor' /proc/cpuinfo | wc
 -l) && make install

启动nginx

#配置环境变量
[root@localhost ~]# echo 'export PATH=/usr/local/nginx/sbin:$PATH' > /etc/pr
ofile.d/nginx.sh
[root@localhost ~]# . /etc/profile.d/nginx.sh
[root@localhost ~]# nginx
[root@localhost ~]# ss -antl
State      Recv-Q Send-Q Local Address:Port               Peer Address:Port    
LISTEN     0      128          *:111                      *:*
LISTEN     0      128          *:80                       *:*
LISTEN     0      5      192.168.122.1:53                       *:*            
LISTEN     0      128          *:22                       *:*
LISTEN     0      128    127.0.0.1:631                      *:*                
LISTEN     0      100    127.0.0.1:25                       *:*                
LISTEN     0      128    127.0.0.1:6011                     *:*                
LISTEN     0      128         :::111                     :::*
LISTEN     0      128         :::22                      :::*
LISTEN     0      128        ::1:631                     :::*
LISTEN     0      100        ::1:25                      :::*
LISTEN     0      128        ::1:6011                    :::*

访问到nginx 默认页
在这里插入图片描述

访问控制

用于location段
allow :设定允许哪台或哪些主机访问,多个参数间用空格隔开
deny :设定禁止哪台或那些主机访问,多个参数用空格隔开

allow 192.168.1.1/32 172.16.0.0/16;
deny all;       #可写ip或网段

修改配置文件

   location / {
            root   /www;
            index  index.html index.htm index.php;
            deny 192.168.118.100/24;         #拒绝本机
        }

在这里插入图片描述

基于用户认证

auth_basic "欢迎信息"
auth_basic_user_file "/path/to/user_anth_file"
###
user_anth_file内容格式为:
username:password

这里的密码为加密后的密码串,建议用htpasswd来创建此文件

htpasswd -c -m /path/to/.user_auth_file USERNAME

安装httpd-tools.x86_64 0:2.4.6-80.el7.centos.1

[root@nginx ~]# yum -y install httpd-tools
[root@nginx ~]# htpasswd -c -m /usr/local/nginx/dxk dxk    #用户为dxk
New password:
Re-type new password:
Adding password for user dxk
[root@nginx ~]# cat /usr/local/nginx/dxk
dxk:$apr1$GFSNqOA0$DxMTeAfeV.fYX9GPflHKu.     #用户名和加密后的密码

修改nginx的配置文件

[root@nginx ~]# vim /usr/local/nginx/conf/nginx.conf
  location / {
            root   /www;
            index  index.html index.htm index.php;
            #新增这两行
            auth_basic "welcome";       #访问注释信息
            auth_basic_user_file "/usr/local/nginx/dxk";     #登录的目录
        }

重启nginx

[root@nginx ~]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
#语法没有问题
[root@nginx ~]# nginx -s reload

访问nginx,弹出登录页面
在这里插入图片描述
成功登录,可看到nginx默认页
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Nginx是用于HTTP,HTTPS,SMTP,POP3和IMAP协议的开源反向代理服务器,以及负载平衡器,HTTP缓存和Web服务器(原始服务器)。Nginx项目一开始就非常关注高并发,高性能和低内存使用。它获得了两节式BSD许可,并在Linux,BSD变体,Mac OS X,Solaris,AIX,HP-UX以及其他* nix版本上运行。它还具有用于Microsoft Windows的概念证明端口。 托管一些简单的静态内容 $ docker run --name some-nginx -v /some/content:/usr/share/nginx/html:ro -d nginx 或者,Dockerfile可以使用简单的方法来生成包含必要内容的新图像(这比上面的绑定安装要干净得多): FROM nginx COPY static-html-directory /usr/share/nginx/html 将此文件放置在与目录相同的目录中(“ static-html-directory”),运行docker build -t some-content-nginx .,然后启动容器: $ docker run --name some-nginx -d some-content-nginx 暴露外部端口 $ docker run --name some-nginx -d -p 8080:80 some-content-nginx 然后,您可以在浏览器中点击http://localhost:8080或http://host-ip:8080。 复杂的配置 $ docker run --name my-custom-nginx-container -v /host/path/nginx.conf:/etc/nginx/nginx.conf:ro -d nginx 有关nginx配置文件的语法的信息,请参阅官方文档(特别是《入门指南》)。 如果您希望采用默认配置,请使用以下类似内容从运行的nginx容器中复制它: $ docker run --name tmp-nginx-container -d nginx $ docker cp tmp-nginx-container:/etc/nginx/nginx.conf /host/path/nginx.conf $ docker rm -f tmp-nginx-container 也可以使用简单的Dockerfile(在中/host/path/)更干净地完成此操作: FROM nginx COPY nginx.conf /etc/nginx/nginx.conf 如果您CMD在Dockerfile中添加了自定义,请确保将包含-g daemon off;在其中CMD,以使nginx保持在前台,以便Docker可以正确跟踪进程(否则您的容器将在启动后立即停止)! 然后使用构建图像docker build -t custom-nginx .并按如下所示运行它: $ docker run --name my-custom-nginx-container -d custom-nginxNginx配置中使用环境变量 现成的nginx不支持大多数配置块中的环境变量。但是,envsubst如果您需要在nginx启动之前动态生成nginx配置,则可以将其用作解决方法。 这是使用docker-compose.yml的示例: web: image: nginx volumes: - ./mysite.template:/etc/nginx/conf.d/mysite.template ports: - "8080:80" environment: - NGINX_HOST=foobar.com - NGINX_PORT=80 command: /bin/bash -c "envsubst /etc/nginx/conf.d/default.conf && exec nginx -g 'daemon off;'" mysite.template然后,该文件可能包含如下变量引用: listen ${NGINX_PORT}; 在只读模式下运行Nginx 要以只读模式运行nginx,您需要将Docker卷安装到nginx写入信息的每个位置。默认的nginx配置需要对/var/cache和的写权限/var/run。可以通过如下运行nginx轻松地完成此操作: $ d

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值