当前位置: 首页 > Linux

Nginx基础知识(一)——Nginx快速搭建及基本参数

时间:2023-04-06 04:39:50 Linux

Nginx快速搭建及基本参数一、Nginx简介1.Nginx简介Nginx是一个开源、高性能、可靠的HTTP中间件和代理服务。2.常见的HTTP服务httpd-ApacheIIS-MicrosoftGWE-Googletomcat-Sun2.为什么选择Nginx1。IO多路复用epoll什么是IO多路复用多个描述符的I/O操作可以在一个线程中进行并发是顺序交替完成的,称为I/O多路复用,这里的“多路复用”是指对同一个线程进行多路复用。epollIO多路复用的实现是什么:select、poll、epollselect基本原理:select函数监听的文件描述符分为3类,分别是writefds、readfds、exceptfds。调用后,select函数会阻塞,直到一个描述符就绪(数据可读、可写、可除外),或超时(timeout指定等待时间,如果立即返回,则设置为null),函数返回。当select函数返回时,遍历fdset就可以找到就绪描述符。选择缺点:1.对可监控的文件描述符数量有最大限制。2、线性扫描效率低下。epoll的基本原理:epoll支持水平触发和边沿触发。最大的特点是边沿触发。它只告诉进程哪些fds刚刚准备就绪,它只会被通知一次。另一个特点是epoll使用“事件”就绪通知方式,通过epoll_ctl注册fd。一旦fd就绪,内核会使用类似callback的回调机制来激活fd,epoll_wait可以收到通知。epoll的优点:1.没有最大并发连接数限制,可以打开的FD上限远大于1024(1G内存可以监听10万个端口左右)。2.效率提升不是轮询的方式,效率不会随着FD数量的增加而降低。3、内存拷贝,使用mmap()文件映射内存,加速与内核空间的消息传递;也就是说,epoll使用mmap来减少复制开销。2.轻量级功能模块,代码少,模块化3.CPU亲和性(affinity)好的CPU亲和性(affinity)是一种绑定CPU核心和Nginx工作进程的方式,将每个worker进程固定在一个CPU上执行,减少CPUcachemiss,获得更好的性能。4.sendfilesendfile允许Nginx在传输文件时直接在磁盘和tcpsocket之间传输数据。如果不开启该参数,会先在用户空间(Nginx进程空间)申请一块buffer,使用read函数从磁盘读取数据到缓存,再从缓存读取buffer到用户空间,然后使用write函数将数据从用户空间buffer写入到kernelbuffer,最后写入到tcpsocket。三、Nginx的快速设置和基本参数(CentOS7)1、yum安装【参考】创建/etc/yum.repos.d/nginx.repo文件,输入以下内容[nginx]name=nginxrepobaseurl=http://nginx.org/packages/mainline/OS/OSRELEASE/$basearch/gpgcheck=0enabled=1OS可选值为centos和rhel。OSRELEASE为系统版本,例如6和7分别代表6.x和7.x版本。运行yuminstall-ynginx安装nginx运行nginx-v查看nginx版本[root~]#nginx-vnginxversion:nginx/1.14.02.编译参数据详解查看nginx安装时的编译参数据nginx-V[root~]#nginx-Vnginxversion:nginx/1.14.0builtbygcc4.8.520150623(RedHat4.8.5-16)(GCC)builtwithOpenSSL1.0.2k-fips2017年1月26日TLSSNI支持启用配置参数:--prefix=/etc/nginx--sbin-path=/usr/sbin/nginx--modules-path=/usr/lib64/nginx/modules--conf-path=/etc/nginx/nginx.conf--error-log-path=/var/log/nginx/error.log--http-log-path=/var/log/nginx/access.log--pid-path=/var/run/nginx.pid--lock-path=/var/run/nginx.lock--http-client-body-temp-path=/var/cache/nginx/client_temp--http-proxy-temp-path=/var/cache/nginx/proxy_temp--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp--http-scgi-temp-path=/var/cache/nginx/scgi_temp--user=nginx--group=nginx--with-compat--with-file-aio--with-threads--with-http_addition_module--与-http_auth_request_module--with-http_dav_module--with-http_flv_module--with-http_gunzip_module--with-http_gzip_static_module--with-http_mp4_module--with-http_random_index_module--with-http_realip_module--with-http_secure_link_module--with-http_slice_module--with-http_ssl_module--with-http_stub_status_module--with-http_sub_module--with-http_v2_module--with-mail--with-mail_ssl_module--with-stream--with-stream_realip_module--with-stream_ssl_module--with-stream_ssl_preread_module--with-cc-opt='-O2-g-pipe-Wall-Wp,-D_FORTIFY_SOURCE=2-fexceptions-fstack-protector-strong--param=ssp-buffer-size=4-grecord-gcc-switches-m64-mtune=generic-fPIC'--with-ld-opt='-Wl,-z,relro-Wl,-z,now-pie'安装编译参数详解【参考】编译选项的作用--prefix=/etc/nginx配置文件目录--sbin-path=/usr/sbin/nginx可执行文件名及目录--modules-path=/usr/lib64/nginx/modulesNginx动态模块安装目录--conf-path=/etc/nginx/nginx.conf主配置文件名及目录--error-log-path=/var/log/nginx/error.log全局错误日志文件名及目录--http-log-path=/var/log/nginx/access.logHTTP服务器的主要请求日志文件的名称和目录--pid-path=/var/run/nginx.pidnginx.pid所在的目录,是进程ID文件存放主进程--lock-path=/var/run/nginx.locknginx.lock所在目录--http-client-body-temp-path=/var/cache/nginx/client_temp--http-proxy-temp-path=/var/cache/nginx/proxy_temp--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp--http-scgi-temp-path=/var/cache/nginx/scgi_tempnginx执行相应模块时保留的临时文件--user=nginx--group=nginx设置Nginx进程启动的用户和用户组--with-http_random_index_module在目录中随机选择一个随机主页--with-http_stub_status_moduleNginx客户端状态--with-http_sub_moduleHTTP内容替换--with-cc-opt=设置额外的参数,将添加到CFLAGS变量--with-ld-opt=设置附加参数,Linksystemlibrary3.安装目录详解查看所有nginx文件的安装位置rpm-qlnginx[root~]#rpm-qlnginx/etc/logrotate.d/nginx/etc/nginx/etc/nginx/nginx.conf/etc/nginx/conf.d/etc/nginx/conf.d/default.conf/etc/nginx/fastcgi_params/etc/nginx/scgi_params/etc/nginx/uwsgi_params/etc/nginx/koi-utf/etc/nginx/koi-win/etc/nginx/win-utf/etc/nginx/mime.types/etc/sysconfig/nginx/etc/sysconfig/nginx-debug/usr/lib/systemd/system/nginx-debug.service/usr/lib/systemd/system/nginx.service/usr/lib64/nginx/usr/lib64/nginx/modules/etc/nginx/modules/usr/sbin/nginx/usr/sbin/nginx-debug/usr/share/doc/nginx-1.14.0/usr/share/doc/nginx-1.14.0/COPYRIGHT/usr/share/man/man8/nginx.8.gz/usr/share/nginx/usr/share/nginx/html/usr/share/nginx/html/50x.html/usr/share/nginx/html/index.html/var/cache/nginx/var/log/nginx/usr/libexec/initscripts/legacy-actions/nginx/usr/libexec/initscripts/legacy-actions/nginx/check-reload/usr/libexec/initscripts/legacy-actions/nginx/upgrade默认路径类型函数/etc/logrotate.d/nginx配置文件Nginx日志轮转,用于logrotate服务的日志切割/etc/nginx/etc/nginx/nginx.conf/etc/nginx/conf.d/etc/nginx/conf.d/default.conf目录,配置文件nginx主配置文件/etc/nginx/fastcgi_params/etc/nginx/uwsig_params/etc/nginx/scgi_params配置文件cgi配置相关,fastcgi配置/etc/nginx/koi-utf/etc/nginx/koi-win/etc/nginx/win-utf配置文件编码转换映射转换文件/etc/nginx/mime.types配置文件设置Content-Type与http协议扩展的对应关系/usr/lib/systemd/system/nginx-debug.service/usr/lib/systemd/system/nginx.service/etc/sysconfig/nginx/etc/sysconfig/nginx-debug配置文件用于配置系统daemon进程管理器的管理方式/usr/lib64/nginx/modules/etc/nginx/mudules目录Nginx模块目录/usr/sbin/nginx/usr/sbin/nginx-debug命令Nginx服务启动管理终端命令/usr/share/doc/nginx-1.14.0/usr/share/doc/nginx-1.14.0/COPYRIGHT/usr/share/man/man8/nginx.8.gz文件、Nginx手册和帮助文件目录/var/cache/nginx目录Nginx缓存目录/var/log/nginx目录Nginx日志目录4.Nginx常用命令命令说明nginx[-c<配置文件>]启动nginxwith指定配置文件squit正常停止nginx,nginx在退出前完成接受的连接请求。nginx-sstop快速停止nginx,不管是否有正在处理的请求。nginx-sreload[-c<配置文件>]重新加载配置文件nginx-sreopen重新打开日志文件nginx-v查看版本nginx-V安装时查看编译参数nginx-t[-c<配置文件>]check是语法配置文件正确吗?nginx-sreload命令加载修改后的配置文件。命令发出后,会发生以下事件。Nginx的master进程检查配置文件的正确性。如果错误,则返回错误信息,nginx继续使用原来的配置文件工作(因为worker不受影响)Nginx启动一个新的worker进程,使用新的配置文件Nginx将新的请求分配给一个新的worker进程Nginx等待之前worker进程的所有请求返回,关闭相关worker进程并重复上述过程,直到所有旧worker进程都关闭