- Java锁的逻辑(结合对象头和ObjectMonitor)
- 还在用饼状图?来瞧瞧这些炫酷的百分比可视化新图形(附代码实现)⛵
- 自动注册实体类到EntityFrameworkCore上下文,并适配ABP及ABPVNext
- 基于Sklearn机器学习代码实战
我们使用Nginx主要是通过其配置文件nginx.conf来实现的。按照一定的规则,编写特定的指令,可以帮助我们实现对Web服务的控制! 所以,学习Nginx的用法,几乎就是学习nginx.conf! 。
如何使用本篇文章 。
内容导览 。
nginx.conf文件在哪里?
配置文件的语法规则:
设置一些影响Nginx服务器整体运行的配置指令,这些指令的作用域是Nginx服务器全局.
user user [group],
如果user指令不配置或者配置为user nobody nobody,则默认所有用户都可以启动Nginx进程.
该属性也可以在编译的时候指定,语法如下`./configure --user=user --group=group`,如果两个地方都进行了设置,最终生效的是配置文件中的配置.
master_process on|of ( 默认on) 。
worker_processes 个数,
当worker_process设置为3时 。
daemon on|off ( 默认值on) 。
pid PID 文件路径(例如:logs/nginx.pid),
error_log 文件路径 [日志级别],
events 块的主要功能:
accept_mutex on | off ,
multi_accept on|off,
worker_connections 数字 ,
use 网络IO模型 ,
http块主要定义与 http服务相关 的配置 。
include mime.types,
default_type application/octet-stream,
add_header name value [always],
keepalive_timeout timeout [header_timeout] 。
keepalive_requests number,
resolver_timeout time,
sendfile on | o ff (默认值) ,
sendfile_max_chunk 数据量大小size(单位kb),
tcp_nopush on|off (默认值),
tcp_nodelay on (默认值)|off,
最佳实践 :在http共有配置参数中全部开启 。
功能 :将Nginx服务中的静态资源进行压缩,再发送给Client(例如Chrome),减少网络传输量,提高传输速率和效率 。
基于ngx_http_gzip_module模块(已自动安装)的静态资源压缩 。
gzip on|off (默认),
gzip_types mime-type ...,
http{
gzip on; #开启
gzip_types application/javascript; #指定对JS文件进行压缩
}
gzip_comp_level level,
gzip_vary on|off (默认值),
gzip_buffers number size,
gzip_disable regex ...,
gzip_http_version 1.0|1.1 (默认值),
gzip_min_length length,
gzip_proxied off (默认值) | expired | no-cache | no-store | private | no_last_modified | no_etag | auth|any,
gzip on; #开启gzip功能
gzip_types *; #压缩源文件类型,根据具体的访问资源类型设定
gzip_comp_level 6; #gzip压缩级别
gzip_min_length 1024; #进行压缩响应页面的最小长度,content-length
gzip_buffers 4 16K; #缓存空间大小
gzip_http_version 1.1; #指定压缩响应所需要的最低HTTP请求版本
gzip_vary on; #往头信息中添加压缩标识
gzip_disable "MSIE [1-6]\."; #对IE6以下的版本都不进行压缩
gzip_proxied off; #nginx作为反向代理压缩服务端返回数据的条件
这个配置可能再多处都要使用,我们将其抽取为独立的配置文件,方便在多处进行“include” 。
Step1:vim %nginx所在目录%/config/my_config/gzip_config.conf 。
Step2:在Nginx主配置目录导入该文件:vim %nginx所在目录%/config/nginx.conf 。
背景 。
安装ngx_http_gzip_static_module 。
语法: gzip_static on | off(默认值) | always,
位置:http、server、location 。
测试 。
Nginx的web缓存服务主要是使用`ngx_http_proxy_module`模块相关指令集来完成 。
proxy_cache_path path [levels=number] keys_zone=zone_name:zone_size [inactive=time] [max_size=size],
http { #次配置在http块中
proxy_cache_path /usr/local/proxy_cache keys_zone=itcast:200m levels=1:2:1 inactive=1d max_size=20g;
}
proxy_cache zone_name | off (默认),
proxy_cache_key key,
proxy_cache_valid [code ...] time,
proxy_cache_min_uses number,
proxy_cache_methods GET|HEAD|POST,
expires [modified] time | epoch | max | off (默认值),
Cache-Control:告诉所有的缓存机制是否可以缓存及哪种类型.
取值枚举 。
通过add_header指控制Response Header中的数据。例子:设定响应头中Cache-Control为public:add_header Cache-Control public,
方式一:删除对应的缓存目录 。
方式二:使用第三方扩展模块(ngx_cache_purge,需要安装) 。
。
ngx_cache_purge 安装过程 。
server{
location ~/purge(/.*) {
proxy_cache_purge itcast itheima;
}
}
proxy_no_cache string ...,
proxy_cache_bypass string ...,
。
$cookie_nocache : 指的是当前请求的cookie中键的名称为nocache对应的值 。
$arg_nocache 和$arg_comment: 指的是当前请求的参数中属性名为nocache和comment对应的属性值 。
。
实例:配置不缓存的资源 。
server{
listen 8080;
server_name localhost;
location / {
if ($request_uri ~ /.*\.js$){
set $nocache 1;
}
proxy_no_cache $nocache $cookie_nocache $arg_nocache $arg_comment;
proxy_cache_bypass $nocache $cookie_nocache $arg_nocache $arg_comment;
}
}
access_log on/off,
access_log path[format[buffer=size]] 。
log_format name [escape=default\|json\|none] string....,
gzip on | off,
开启关闭压缩日志文件 。
实现方式 。
每次访问,都需要情况DNS缓存(ipconfig/flushdns),才能看到效果 。
upstream 取个名字 {
server 服务的域名或者IP地址 [paramerters]
server 服务的域名或者IP地址 [paramerters] … #可以配置多个服务
}
paramerters- 控制负载服务的状态 。
负载均衡策略 。
。
weight :权重方式 。
ip_hash :依据ip分配方式 。
least_conn :依据最少连接方式 。
url_hash :依据URL分配方式 。
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器 。
。
fair :依据响应时间方式 。
Nginx在1.9之后,增加了一个stream模块,用来实现四层协议的转发、代理、负载均衡等。stream模块的用法跟http的用法类似,允许我们配置一组TCP或者UDP等协议的监听,然后通过proxy_pass来转发我们的请求,通过upstream添加多个后端服务,实现负载均衡.
。
四层协议负载均衡的实现,一般都会用到LVS、HAProxy、F5等,要么很贵要么配置很麻烦,而Nginx的配置相对来说更简单,更能快速完成工作.
。
添加stream模块的支持 。
stream 取个名字 {
server 服务的域名或者IP地址 [paramerters]
server 服务的域名或者IP地址 [paramerters] … #可以配置多个服务
}
。
实例 。
worker_processes 1;
events {
worker_connections 1024;
}
stream {
upstream redisbackend {
server 192.168.200.146:6379;
server 192.168.200.146:6378;
}
upstream tomcatbackend {
server 192.168.200.146:8080;
}
server {
listen 81;
proxy_pass redisbackend;
}
server {
listen 82;
proxy_pass tomcatbackend;
}
}
http {
include mime.types;
default_type application/octet-stream;
keepalive_timeout 65;
server {
listen 80;
server_name hackyle.com;
location / {
default_type text/html;
return 200 "<h1>I am hackyle.com</h1>";
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
。
最后此篇关于Nginx基础02:配置文件nginx.conf(Part1)的文章就讲到这里了,如果你想了解更多关于Nginx基础02:配置文件nginx.conf(Part1)的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
我有一个无所事事的盒子,已经运行了一段时间,今天,由于某种原因,当我尝试重新启动nginx时,得到了以下提示。 nginx: [emerg] host not found in upstream "w
我注意到,当我使用 ubuntu 命令“nginx”启动 nginx 并执行 systemctl status nginx 时。它表明 systemctl 已禁用。此外,如果我首先使用命令 syste
我的 nginx 配置如下: proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $re
周围有两个配置文件,/etc/nginx/conf.d/default.conf和 /etc/nginx/nginx.conf,但是启用了哪一个呢?我运行的是 CentOS6.4 和 nginx/1.
我的 Nginx 配置仅适用于根位置,所有其他位置都返回“Cannot GET {location}”,其中位置是域后地址的其余部分。 这是我的/etc/nginx/sites-enabled/def
我在 nginx 中为 node.js 服务器设置了反向代理。 server { listen 80; server_name sub.domain.tld; location
我的应用程序将在两个位置提供静态文件,一个是/my/path/project/static,另一个是/my/path/project/jsutils/static。 我很难让网络服务器在两个目录中查找
我的域名注册商的 DNS 访问我的服务器并获取 nginx 默认页面,因此配置正确 我复制了一个当前正在工作的 nginx 虚拟主机,更改了 server_name和 conf 文件的名称,仅此而已。
这个问题在这里已经有了答案: Can't login in to phpPgAdmin (2 个回答) 3年前关闭。 我在centos中遇到了phpPgAdmin登录的奇怪问题,我做了所有需要的事情
我要为PoC进行的操作是向来自动态后端服务器的网页添加href。使用“ subs_filter”可以很容易地添加href,但是我需要使用响应中嵌入的信息来构造href。 是否可以使用LUA处理来自pr
我有网站服务器,它有两个代理(鱿鱼,CF),它们使用不同的 header 来获取真实的 ip。 我猜 nginx 命令 set_real_ip_from ;real_ip_header X-Forwa
在控制台显示如下: Job for nginx.service failed because the control process exited witherror code. See "syste
我有一个问题,我怀疑是 NGINX 问题。基本上,当我尝试登录到我创建的网站时,出现以下错误…… 您要查找的页面暂时不可用。请稍后再试。 有没有人以前遇到过这个? 最佳答案 如果 NGINX 虚拟主机
这是我的 nginx 配置文件: server { listen 80; server_name localhost; location / {
在我的/etc/nginx/nginx.conf 文件中,我有配置。作为:- user nginx; worker_processes 1; error_log /var/log/nginx/e
有谁知道nginx支持软退出吗?这意味着它会一直运行直到所有连接都消失或超时(超过特定时间间隔)并且在此期间也不允许新连接吗? 例如: nginx stop nginx running (2 conn
有没有办法将 Nginx 配置为类似这样的直接服务器返回 (DSR) 负载平衡器: http://blog.haproxy.com/2011/07/29/layer-4-load-balancing-
我通过 apt-get 安装了 Nginx不久前在 Debian 上,我有几个网站在上面。现在我需要安装一些额外的模块,因为我不想搞砸任何事情,所以我想在执行之前仔细检查我的过程。希望这也能帮助其他不
我知道 Apache 的 pagespeed 模块可以使页面访问更快,所以,我想知道 Nginx 是否有等效的模块? 提前致谢! 最佳答案 https://github.com/pagespeed/n
如何将worker_rlimit_nofile设置为一个更大的数字,它可以是或建议最大为多少? 我正在尝试遵循以下建议: 大多数人遇到的第二个最大限制是 与您的操作系统有关。打开一个shell,su给
我是一名优秀的程序员,十分优秀!