Nginx配置
来源:互联网 发布:如何申请淘宝店铺 编辑:程序博客网 时间:2024/06/17 04:44
Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的。从2004年发布至今,凭借开源的力量,已经接近成熟与完善。
Nginx功能丰富,可作为HTTP服务器、反向代理服务器、邮件服务器。支持FastCGI、SSL、Virtual Host、URL Rewrite、Gzip等功能。并且支持很多第三方的模块扩展。
Nginx的稳定性、功能集、示例配置文件和低系统资源的消耗让他后来居上,在全球活跃的网站中有12.18%的使用比率,大约为2220万个网站。
Nginx常用功能
1.Http代理,反向代理
作为web服务器最常用的功能之一,尤其是反向代理。
这里我给来2张图,对正向代理与反向代理做个诠释,具体细节,大家可以翻阅下资料。
Nginx在做反向代理时,提供性能稳定,并且能够提供配置灵活的转发功能。Nginx可以根据不同的正则匹配,采取不同的转发策略,比如图片文件结尾的走文件服务器,动态页面走web服务器,只要你正则写的没问题,又有相对应的服务器解决方案,你就可以随心所欲的玩。并且Nginx对返回结果进行错误页跳转,异常判断等。如果被分发的服务器存在异常,他可以将请求重新转发给另外一台服务器,然后自动去除异常服务器。
2.负载均衡
Nginx提供的负载均衡策略有2种:内置策略和扩展策略。内置策略: 轮询,加权轮询,Ip hash。扩展策略,就天马行空,只有你想不到的没有他做不到的啦,你可以参照所有的负载均衡算法,给他一一找出来做下实现。
3.web缓存
Nginx可以对不同的文件做不同的缓存处理,配置灵活,并且支持FastCGI_Cache,主要用于对FastCGI的动态程序进行缓存。配合着第三方的ngx_cache_purge,对制定的URL缓存内容可以的进行增删管理。
二、Nginx配置文件结构
如果你下载好啦,你的安装文件,不妨打开conf文件夹的nginx.conf文件(Mac默认在/usr/local/nginx/),Nginx服务器的基础配置,默认的配置也存放在此。
在nginx.conf的注释符号位#
1.nginx文件整体结构
... #全局块events { #events块 ...}http { #http块 ... #http全局块 server { #server块 ... #server全局块 location [PATTERN] { #location块 ... } } ... #http全局块}
1.全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
2.events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
3.http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
4.server块:配置虚拟主机的相关参数,一个http中可以有多个server。
5.location块:配置请求的路由,以及各种页面的处理情况。
2.nginx文件详细介绍
########### 每个指令必须有分号结束。##################user nobody; #运行用户worker_processes 8; #启动进程,通常设置成和cpu的数量相等#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;#pid logs/nginx.pid;#工作模式及连接数上限events { worker_connections 65535; #单个后台worker process进程的最大并发链接数, 默认为512 # 事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport # epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能 use epoll; }# 设定http服务器,利用它的反向代理功能提供负载均衡支持http { #设定mime类型,类型由mime.type文件定义 include mime.types; default_type application/octet-stream; log_format main '"$time_local","$remote_addr","$http_x_forwarded_for","$http_authorization","$http_host","$http_usertoken","$request","$request_body","$http_referer","$http_user_agent","$status","$request_time","$body_bytes_sent","$upstream_addr","$upstream_response_time","$http_accept","nginx-111","$upstream_status"'; access_log logs/access.log main; #设定日志格式 #sendfile指令指定nginx是否调用sendfile函数(zero copy方式)来输出文件, #必须设为on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的uptime. sendfile on; #tcp_nopush on; client_max_body_size 31m; client_body_buffer_size 10m; client_body_temp_path /tmp; server_names_hash_bucket_size 128; #timeout send_timeout 60; client_body_timeout 60; client_header_timeout 10; #reset_timedout_connection on; #keepalive_timeout 0; keepalive_timeout 60; #开启gzip压缩 gzip on; gzip_min_length 1k; gzip_buffers 4 128k; gzip_comp_level 1; gzip_types text/plain application/x-javascript text/css application/xml text/javascript image/jpeg image/gif image/png; #设定请求缓冲 client_header_buffer_size 1k; large_client_header_buffers 4 4k; server { listen 80; # 监听听80端口, HTTP server_name devkongfu.changwen.cn; # DNS域名 access_log logs/dev_kongfu_access.log main; #设定本虚拟主机的访问日志 # 默认请求 location /{ proxy_pass http://dev-fs-kongfu-html/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location /ajax/{ proxy_pass http://dev-fs-kongfu-web/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location ~ ^/upload { proxy_pass http://fs-file; proxy_http_version 1.1; proxy_set_header Connection ""; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; # 后端的Web服务器可以通过X-Forwarded-For获取用户真实IP proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Request-Uri $request_uri; } #静态文件,nginx自己处理 location ~ ^/(images|javascript|js|css|flash|media|static)/ { root /var/www/virtual/htdocs; #过期30天,静态文件不怎么更新,过期可以设大一点,如果频繁更新,则可以设置得小一点。 expires 30d; } location ~.*\.(gif|jpg|jpeg|png|css|js|ico|exe|apk)$ { expires 300m; } } server { listen 80; server_name localhost; // 本机 #默认请求 location / { root html; # 定义服务器的默认网站根目录位置 index index.html index.htm; # 定义首页索引文件的名称 } # 定义错误提示页面 error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } #禁止访问 .htxxx 文件 location ~ /\.ht { allow 202.106.10.34; deny all; } #设定查看Nginx状态的地址 location /NginxStatus { stub_status on; access_log on; auth_basic "NginxStatus"; auth_basic_user_file conf/htpasswd; } #PHP 脚本请求全部转发到 FastCGI处理. 使用FastCGI默认配置. location ~ \.php$ { root /root; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /home/www/www$fastcgi_script_name; include fastcgi_params; } } # 这两个是对不同的服务器进行配置 include site-conf/*.conf; include sites-enabled/*.conf;}
3.include文件(site-conf, sites-enabled)
1.创建一个sites-enabled目录,在里面创建api.changwen.cn.conf文件,内容如下
server { listen 80; server_name api.changwen.cn; # 文件名跟这个一致,这个最好也就DNS请求域名 access_log logs/api_fs_access.log main; error_log logs/api_fs_error.log; # 配置Https listen 443 ssl; ssl on; ssl_certificate ssl/1_api.changwen.cn_bundle.crt; ssl_certificate_key ssl/2_api.changwen.cn.key; ssl_session_timeout 5m; ssl_protocols TLSv1.2 TLSv1.1 TLSv1; #ssl_ciphers HIGH:!aNULL:!MD5; ssl_ciphers AES128+EECDH:AES128+EDH:!aNULL; ssl_prefer_server_ciphers on; location / { proxy_pass http://fs-app-web/; # 这个fs-app-web跟下面的文件名一样 add_header Access-Control-Allow-Origin http://wx.fastschool.cn; add_header Access-Control-Allow-Credentials true; add_header Access-Control-Allow-Methods GET,POST,OPTIONS; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass_request_headers on; } }
2.创建一个site-conf目录,在里面创建upstream.conf文件,内容如下
# 设定负载均衡的服务器列表 upstream fs-app-web { # 这个名称跟上面的proxy_pass里文件一样 # weigth参数表示权值,权值越高被分配到的几率越大 # server 10.1.1.107:8701 weight=5; #s1-instance1 server 192.168.1.107:8701; #s1-instance2 server 192.168.1.107:8801; #s2-instance1 server 192.168.1.186:8701; #s2-instance2 server 192.168.1.186:8801; }
- Varnish+Nginx 配置----Nginx
- Nginx-配置-nginx.conf
- 【Nginx】Nginx配置优化
- 105 nginx nginx 配置
- nginx nginx.conf 配置
- nginx 配置
- nginx 配置
- Nginx配置
- nginx配置
- NGINX配置
- nginx配置
- Nginx配置
- nginx配置
- nginx配置
- nginx 配置
- nginx 配置
- nginx配置
- Nginx配置
- Django学习笔记六:form表单实现评论(检验数据合法性)
- 测试Java_AbstractJavaSamplerClient
- Mac安装配置Mongodb
- 看图理解单链表的反转
- 笔试编程三
- Nginx配置
- RSpec测试
- CC13X0CC26X0EvaluationBoard
- 使用Spring Boot创建微服务
- 常见Dos攻击原理及防护(死亡之Ping、Smurf、Teardown、LandAttack、SYN Flood)
- Mysql免安装版配置
- Delphi DataSet和JSON互转函数
- 专访丨大咖传教之App性能测试
- centos7 SVN