Nginx安装及配置
发表于:2024-11-24 作者:千家信息网编辑
千家信息网最后更新 2024年11月24日,Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点
千家信息网最后更新 2024年11月24日Nginx安装及配置
Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。一、nginx可以实现的功能 1、可以作为静态资源的web服务器、可以缓存文件的资源描述符--加速 2、支持对http、stmp、pop3等多种协议的反向代理 3、支持实现缓存和负载均衡 4、支持fcgi 5、支持uWSCGI 6、支持模块化 7、支持过滤器,对特定文件进行压缩传输 8、支持ssl 9、支持图像大小调整二.、nginx的特性 1、模块 2、高性能 3、低内存消耗 4、支持热部署 5、支持异步IO 6、支持事件驱动 7、支持内存映射三、核心模块 1、标准http模块 2、拓展http模块 3、邮件拓展模块 4、第三方模块四、安装依赖[root@156 ~]# yum groupinstall "Development Tools" -y[root@156 ~]# yum install pcre-devel openssl openssl-devel -y 五、安装nginx(1)创建nginx的运行用户[root@156 ~]# groupadd -r nginx[root@156 ~]# useradd -r -s /sbin/nologin -g nginx nginx[root@156 ~]# tar xvf nginx-1.6.2.tar.gz [root@156 ~]# cd nginx-1.6.2[root@156 nginx-1.6.2]# ./configure --help | more[root@156 nginx-1.6.2]# ./configure \--prefix=/usr/local/nginx \--conf-path=/etc/nginx/nginx.conf \--user=nginx --group=nginx \--error-log-path=/var/log/nginx/error.log \--http-log-path=/var/log/nginx/access.log \--pid-path=/var/run/nginx/nginx.pid \--lock-path=/var/lock/nginx.lock \--with-http_ssl_module \--with-http_stub_status_module \--without-http_gzip_module \--with-http_mp4_module \--with-http_flv_module \--http-client-body-temp-path=/var/tmp/nginx/client \--http-proxy-temp-path=/var/tmp/nginx/proxy \--http-fastcgi-temp-path=/var/tmp/nginx/fcgi \[root@156 nginx-1.6.2]# make && make install(2)创建临时文件的保存目录[root@156 nginx-1.6.2]# mkdir /var/tmp/nginx/{client,proxy,fcgi} -pvmkdir: created directory `/var/tmp/nginxclient'mkdir: created directory `/var/tmp/nginxproxy'mkdir: created directory `/var/tmp/nginxfcgi'(3)启动nginx[root@156 ~]# /usr/local/nginx/sbin/nginx[root@156 ~]# ss -tnl | grep 80LISTEN 0 128 *:80 [root@156 ~]# lsof -i :80COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEnginx 8395 root 6u IPv4 20287 0t0 TCP *:http (LISTEN)nginx 8396 nginx 6u IPv4 20287 0t0 TCP *:http (LISTEN)[root@156 ~]# ps aux | grep nginxroot 8395 0.0 0.1 44572 1040 ? Ss 22:05 0:00 nginx: master process /usr/local/nginx/sbin/nginxnginx 8396 0.0 0.1 45000 1620 ? S 22:05 0:00 nginx: worker process root 8513 0.0 0.0 103308 848 pts/0 S+ 22:39 0:00 grep nginx测试:在浏览器上输入 服务器的IP地址即可访问nginx界面,例如 http://192.168.70.156/nginx配置详解六、和nginx正常运行相关的配置 1、worker_processes 1; 设置发起几个nginx的worker进程 2、user userName [groupName]; 指定nginx以谁的身份来运行 3、pid /path/to/file pid文件 4、worker_rlimit_nofile number; 设置所有worker进程一共可以打开的文件的最大数量值 (linux上默认每个用户可以打开1024个文件、套接字也是一个文件)七、nginx性能优化相关配置 5、worker_processes number | auto; 设置发起几个nginx的worker进程 number:应该比物理核心少一个 auto:让系统自动判断 6、worker_cpu_affinity cpumask ……| auto; 设置cpu掩码,将worker进程绑定在一个固定的cpu 举例: worker_processes 4; worker_cpu_affinity 0001 0010 0100 1000; 举例: worker_processes 2; worker_cpu_affinity 0001 0100; 注意:可以用auto,但是是1.9.10之后可以用 7、time_resolution interval; 降低发起系统调用gettimeofday()次数 time_resolution 100ms; 8、worker_priority number; 修改worker进程的nice值(默认是0)八、和事件相关的配置 9、accept_mutex on | off 设置master进程将客户端的请求调度到worker进程的 调度方式:轮询、随机 on:使用轮询 默认方式:off 10、accept_mutex_delay time; 默认500ms 设置master延迟多久才将客户端的请求调度到worker进程 11、user [epoll|poll|select] 通常是不需要指定连接的处理方法(起始就是所使用的事件模型)的 建议让系统自动判断所要使用的方法 12、worker_connections number; 指定每个worker进程可以处理的最大并发连接的数量 默认是1024 13、master_process on | off; 指定是否使用master-worker 默认是:on九、和调试和定位bug相关配置 14、damon off | on 指定nginx工作在前台还是后台 默认是 on 15、error_log file [level]; 指定错误日志的保存位置以及日志级别 总结:经常要修改的参数 worker_processes worker_connections worker_cpu_affinity worker_priority十、和http相关的配置[root@156 ~]# vim /etc/profile.d/nginx.shexport PATH=$PATH:/usr/local/nginx/sbin[root@156 ~]# source /etc/profile.d/nginx.sh [root@156 ~]# nginx[root@156 ~]# nginx -s reload[root@156 ~]# ss -tnl | grep 80 上下文:http {指令}例子:http{ 全局配置:对所有的虚拟主机都生效的配置 sendfile on; keepalive_timeout 10; …… 虚拟主机配置 server{ listen 80;指定该虚拟主机所监听的端口 server_name www.lichao.com;指定虚拟主机的域名 root /vhost/web1;指定虚拟主机的网站根目录 location /{ } } server{ }} 16、server_name 设定虚拟主机的域名,可以使用正则表达式来表示域名 适用范围:server上下文中 server{ server_name www.zxhk.com; } server { server_name *.zxhk.com; } server { server_name www.zxhk.*; } server { server_name *; } server { server_name ~ ^.*\.www.zxhk.com; } www.zxhk.com注意:nginx在进行域名匹配的时候,是有一定的规则,匹配次序如下 1、做精确匹配,server_name中的内容必须和用户请求的内容完全一样 2、检查左侧的通配符 3、检查右侧的通配符 4、检查通配符 5、检查正则表达式 6、通过所有检查都失败,则访问default_server,如果没有指定default_server, 那么第一个server就是default_server 17、listen 指定所监听的套接字 例子: listen 127.0.0.1:80; listen 172.0.0.1; listen 80; listen *:80; listen localhost:80; 18、root 指定网站根目录 使用范围:http、server、location 注意:如果将root写在了http部分,则会对全部的server都有效 例子: [root@156 ~]# cd /etc/nginx/ [root@156 nginx]#cp nginx.conf{,.bak} [root@156 nginx]#vim nginx.conf [root@156 ~]# mkdir -pv /vhost/web1 [root@156 ~]# echo "test for web1
">/vhost/web1/index.html [root@156 ~]# cat /vhost/web1/index.html [root@156 ~]# nginx -s reload http://192.168.70.156/ test for web119、location location [ = | ~ | ~* | ^~ ] uri {……} url:统一资源定位符 uri:统一资源标识符 server{ server_name www.zxhk.com; listen 80; location / { root /vhost/web1; } } 这里的location的含义就是将用户所访问的根映射为/vhost/web1路径 有多个location的例子 server{ server_name www.zxhk.com; listen 80; location / { root /vhost/web1; } location /img/ { root /tmp/img; } location ~ \.php$ { root /phpfile; } } location作路径映射的时候,有多种方式 不带符号 = ~ ~* ^~ 1、不带符号,如下 location /img { root /vhost/web1; } http://www.baidu.com/img http://www.baidu.com/a.html 2、= 表示的是精确匹配 location = /img { root /vhost/web1; } 要求只有用户所请求的uri和location所指定的uri必须 完全一致,否则匹配失败,如下 http://www.baidu.com/img <<匹配成功 http://www.baidu.com/img/index.html <<匹配失败 3、~表示对用户所请求的uri做正则表达式,检查过程中区分大小写 location ~ .jgp$ { root /vhost/web1; } 4、~*表示对用户所请求的uri做正则表达式,检查过程中不区分大小写 5、^~不对用户所请求的uri做正则表达式检查,而是只检查uri的左半部分 各种写法的优先级 精确匹配优先级最高(=) uri的左半部检查 区分大小写的正则表达式检查 不区分大小写的正则表达式检查 不带符号的location location /img { root /vhost/web1; } [root@156 ~]# cd /vhost/web1/ [root@156 web1]# mkdir img [root@156 web1]# echo "this is test" >index.html [root@156 web1]# echo "this is image" >img/index.html http://192.168.70.156/ this is test http://192.168.70.156/img/index.html this is image [root@156 ~]# vim /etc/nginx/nginx.conf server { listen 80; server_name www.zxhk.com; location / { root /vhost/web1/; } location /img/ { root /vhost/web2/; } } [root@156 ~]# cd /vhost/ [root@156 vhost]# mkdir web2 [root@156 vhost]# echo "this is web2" > web2/index.html [root@156 vhost]# source /etc/profile.d/nginx.sh [root@156 vhost]# nginx -s reload http://192.168.70.156/img 404 Not Found [root@156 vhost]# vim /var/log/nginx/error.log 2019/09/05 08:52:38 [error] 1915#0: *1 open() "/vhost/web1/favicon.ico" failed (2: No such file or directory), [root@156 vhost]# cd web2/ [root@156 web2]# ls index.html [root@156 web2]# mkdir img [root@156 web2]# mv index.html img/ http://192.168.70.156/img this is web2 20、alias path 将用户所请求的uri映射为一个指定的路径 server { listen 80; server_name www.zxhk.com; location /img1/ { root /vhost/web1/; } location /img2/ { alias /vhost/web1/; } }cd /vhost/web1lsecho "/vhost/web1">index.htmlmkdir img1echo "/vhost/web1/img1">img1/index.htmlsource /etc/profile.d/nginx.sh nginx -tnginx -s reloadlsmkdir img2echo "/vhost/web2/img/2">img2/index.htmltreehttp://192.168.70.156/img2//vhost/web1http://192.168.70.156/img2404 Not Foundvim /var/log/nginx/error.log 2019/09/05 09:51:08 [error] 2392#0: *13 open() "/usr/local/nginx/html/img2" failed (2: No such file or directory), client: 192.168.70.1, server: www.zxhk.com, request: "GET /img2 HTTP/1.1", host:"192.168.70.156"
支持
配置
进程
文件
服务
服务器
模块
用户
主机
虚拟主机
资源
检查
例子
域名
系统
代理
事件
内存
就是
方式
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
php插入数据库没报错
软件开发的工作工资怎么样
客户端服务器程序开发
奉贤区新能源软件开发推荐
软件开发能入库存吗
坪山区光纤网络技术开发厂家现货
hp服务器认证证书
达梦数据库 报价
笔记本电脑访问服务器步骤
fifa18+ut+数据库
网络录像服务器
沈阳软件开发就业环境
科技与互联网演讲稿
音视频开发和软件开发
卫生院 网络安全信息自查
c#软件开发助理岗位职责
数据库修改数据语句怎么写
esn网络安全教程
飞腾芯片服务器首次入围
B2B电子商务从网络技术
饥荒服务器旧版本模组
税友软件开发公司
西安北站重点旅客服务器位置
杭州迅购网络技术有限公司
阿里云服务器域名绑定域名
软件开发过程设计的危险源
太原市信用卡大数据库
境外服务器如何连接快一点
网络安全教育课观后感600
土木工程转网络安全