手机版

百科生活 投稿

检测代理服务器设置,检查浏览器的代理服务器设置是否正确(安全开发运维必备的Nginx代理Web服务器性能优化与安全加固配置)

百科 2025-12-27 18:30:45 投稿 阅读:1308次

关于【检测代理服务器设置】:检测代理服务器设置,今天小编给您分享一下,如果对您有所帮助别忘了关注本站哦。

  • 内容导航:
  • 1、检测代理服务器设置
  • 2、安全开发运维必备的Nginx代理Web服务器性能优化与安全加固配置

1、检测代理服务器设置

  1、首先,打开浏览器,点击“菜单栏”的工具,选择internet选项,

  2、如果你没有菜单栏,可以在浏览器空白处点击,选择菜单栏。这样就开启了菜单栏,然后选择工具。

  3、进入选项之后,首先我们切换到“连接”选项卡。这里设置代理分两个类别,拨号和局域网,如果你通过拨号上网,如果是通过路由器则选择局域网设置。

  4、拨号设置:点击设置进入设置面板,勾选对此连接使用代理服务器,然后输入地址和端口号即可。

  5、局域网设置:局域网设置代理和拨号设置一样。其中如果你使用脚本,那么勾选自动配置脚本,系统会自动检测设置。配置完成之后,不要忘了点击确定,使设置生效。

2、安全开发运维必备的Nginx代理Web服务器性能优化与安全加固配置

1.引言#

1.1 目的

为了更好的指导部署与测试艺术升系统nginx网站服务器高性能同时下安全稳定运行,需要对nginx服务进行调优与加固;

本次进行Nginx服务调优加固主要从以下几个部分:

  • 模块性能优化
  • 系统内核优化
  • 编译安装优化
  • 性能参数优化
  • 安全加固配置

1.2 目标范围

本文档仅供内部使用,禁止外传,帮助研发人员,运维人员对系统长期稳定的运行提供技术文档参考。

1.3 读者对象

  1. 项目经理
  2. 开发人员
  3. 测试人员
  4. 运维人员
  5. 相关领导

2.参考说明#

2.1 帮助参考

Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx作为负载均衡服务器, Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理服务器对外进行服务。

Nginx版本选择:

  • Mainline version 最新版本,推荐测试的业务项目的时候使用
  • Stable version 稳定版本,推荐项目上线实际使用
  • Legacy versions 历史版本,不推荐选择可能存在脆弱性漏洞

项目结构:

#编译后的nginx项目结结构/etc/nginx/├── client_body_temp #客户端上面的临时文件存放目录├── conf #nginx的配置文件存放目录├── fastcgi_temp #fastcgi的临时文件存放目录├── html #存放静态资源或者脚本文件的地方├── logs #nginx日志文件├── proxy_temp #nginx正向/反向代理缓存文件存放目录├── sbin #nginx可执行文件├── scgi_temp #scgi临时文件目录└── uwsgi_temp #uwsgi临时文件存放目录



Nginx文档帮助: http://nginx.org/en/docs/
Nginx首页地址目录: /usr/share/nginx/html
Nginx配置文件:

  • /etc/nginx/nginx.conf
  • /usr/local/nginx/conf/nginx.conf
  • /usr/local/etc/nginx/nginx.conf



2.2 参数说明

localtion 请求匹配的url实是一个正则表达式:

# 语法规则: location [=|~|~*|^~] /uri/ { ... }# 参数解析: = 表示精确匹配,这个优先级也是最高的/ 通用匹配,任何请求都会匹配到,默认匹配.~ 表示区分大小写的正则匹配~* 表示不区分大小写的正则匹配(和上面的唯一区别就是大小写) !~和!~*分别为区分大小写不匹配及不区分大小写不匹配的正则!~,!~* : 分别标识为区分大小写不匹配及不区分大小写不匹配的正则^~ 表示 uri 以某个常规字符串开头,理解为匹配 url 路径即可。nginx 不对 url 做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa 匹配到(注意是空格)

Nginx 匹配判断表达式:

-f 和 !-f: 用来判断是否存在文件-d 和 !-d: 用来判断是否存在目录-e 和 !-e: 用来判断是否存在文件或目录-x 和 !-x: 用来判断文件是否可执行

例如,匹配末尾为如下后缀的静态并判断是否存在该文件, 如不存在则404。

location ~* \.(js|css|jpg|jpeg|gif|png|swf)$ { if (-f $request_filename) { return 403; break; }}



3.3 模块说明

查看可用模块编译参数:http://nginx.org/en/docs/configure.html

#可以通过运行 "./configure --help" 查看编译帮助,决定是否需要安装哪些模块,比如下面的ssi模块能够实现访问shtml页面./configure -help



http_gzip模块
开启gzip压缩输出(常常是大于1kb的静态文件),减少网络传输;

gzip_min_length 1k #设置允许压缩的页面最小字节数页面字节数从content-length中进行获取,默认值是20gzip_buffers 4 16k #设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流。4 16k代表以16k为单位,安装原始数据大小以16k为单位的4倍申请内存。gzip_comp_level 2 #gzip压缩比,其值从1到9数字越大压缩率越高,越消耗CPU负载也越高gzip_types #匹配mime类型进行压缩,无论是否指定”text/html”类型总是会被压缩的,推荐配置:`gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript。`gzip_http_version 1.0 #用于识别 http 协议的版本早期的浏览器不支持 Gzip 压缩,用户就会看到乱码,所以为了支持前期版本加上了这个选项;如果你用了 Nginx 的反向代理并期望也启用 Gzip 压缩的话,由于末端通信是 http/1.0,故请设置为 1.0。gzip_proxied any #Nginx作为反向代理的时候启用,决定开启或者关闭后端服务器返回的结果是否压缩,匹配的前提是后端服务器必须要返回包含”Via”的 header头。gzip_vary alt="检测代理服务器设置,检查浏览器的代理服务器设置是否正确(安全开发运维必备的Nginx代理Web服务器性能优化与安全加固配置)" src="https://p3.toutiaoimg.com/tos-cn-i-qvj2lq49k0/3602904dba2d4036be6e84e61576d2c2~tplv-tt-large.image" />

GCC编译参数优化 [可选项] 总共提供了5级编译优化级别:

  • -O0:无优化。
  • -O和-O1:使用能减少目标代码尺寸以及执行时间并且不会使编译时间明显增加的优化,在编译大型程序的时候会显著增加编译时内存的使用。
  • -O2:包含-O1的优化并增加了不需要在目标文件大小和执行速度上进行折衷的优化。编译器不执行循环展开以及函数内联。此选项将增加编译时间和目标文件的执行性能。
  • -Os:可以看成 -O2.5,专门优化目标文件大小,执行所有的不增加目标文件大小的-O2优化选项,并且执行专门减小目标文件大小的优化选项。适用于磁盘空间紧张时使用。但有可能有未知的问题发生,况且目前硬盘容量很大,常用程序无必要使用。
  • -O3:打开所有 -O2 的优化选项外增加 -finline-functions、-funswitch-loops、-fgcse-after-reload 优化选项。相对于 -O2 性能并未有较多提高,编译时间也最长,生成的目标文件也更大更占内存,有时性能不增反而降低,甚至产生不可预知的问题(包括错误),所以并不被大多数软件安装推荐,除非有绝对把握方可使用此优化级别。



常用编译参数:

#编译0:常规编译参数configure arguments: #安装的目录或者路径#--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#执行对应模块nginx所保留的临时文件#--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 --with-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#设置额外的参数将被添加到CFLAGS#--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'#编译1:除多余模块./configure \"--prefix=/App/nginx" \ "--user=nginx" \ "--group=nginx" \"--with-http_stub_status_module" \"--without-http_auth_basic_module" \"--without-http_autoindex_module" \"--without-http_browser_module" \"--without-http_empty_gif_module" \"--without-http_geo_module" \"--without-http_limit_conn_module" \"--without-http_limit_req_module" \"--without-http_map_module" \"--without-http_memcached_module" \"--without-http_proxy_module" \"--without-http_referer_module" \"--without-http_scgi_module" \"--without-http_split_clients_module" \"--without-http_ssi_module" \"--without-http_upstream_ip_hash_module" \"--without-http_upstream_keepalive_module" \"--without-http_upstream_least_conn_module" \"--without-http_userid_module" \"--without-http_uwsgi_module" \"--without-mail_imap_module" \"--without-mail_pop3_module" \"--without-mail_smtp_module" \"--without-poll_module" \"--without-select_module" \"--with-cc-opt='-O2'"



3.3 性能优化

缓存和压缩与限制可以提高性能
NGINX的一些额外功能可用于提高Web应用的性能,调优的时候web应用不需要关掉但值得一提,因为它们的影响可能很重要。

  • 1)缓存
    一个启用NGINX缓存的情景,一组web或者应用服务器负载均衡,可以显著缩短对客户端的响应时间,同时大幅度降低后端服务器的负载。缓存本身就可以作个专题来讲,这里我们就不试图讲它了。

# 网页资源缓存location ~* \.(xml|html|htm)$ { # 资源决绝对目录设置 root /var/www/html; # 日志文件的相对路径或完整路径 access_log /path/to/file.log; # 开启日志记录 access_log alt="检测代理服务器设置,检查浏览器的代理服务器设置是否正确(安全开发运维必备的Nginx代理Web服务器性能优化与安全加固配置)" src="https://p3.toutiaoimg.com/tos-cn-i-qvj2lq49k0/a44c03f6d0b6430d945bfe9aea9254f6~tplv-tt-large.image" />

设置成功后验证:

检测代理服务器设置,检查浏览器的代理服务器设置是否正确(安全开发运维必备的Nginx代理Web服务器性能优化与安全加固配置)



1.低权限用户运行服务

应配置非root低权限用户来运行nginx服务,设置如下建立Nginx用户组和用户,采用user指令指运行用户

加固方法:

groupadd nginxweb;useradd -M -g nginxweb -s /sbin/nologin nginxweb #nginx.conf 中配置 或者编译 的时候指定#nginx 安装编译参数--user=nginx --group=nginxuser nginxweb



2.配置SSL及其会话复用

我们应该为提供的站点配置Secure Sockets Layer Protocol (SSL协议),配置其是为了数据传输的安全,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。

server { # 开启 SSL 与 http2 支持 listen 443 ssl http2; listen [::]:443 ssl http2; # 开启 SSL ,如果想http 与 https 公用一个配置则可以将其注释( the "ssl" directive is deprecated ) # ssl alt="检测代理服务器设置,检查浏览器的代理服务器设置是否正确(安全开发运维必备的Nginx代理Web服务器性能优化与安全加固配置)" src="https://p9.toutiaoimg.com/tos-cn-i-qvj2lq49k0/e117633bcfa543888f0a2f0dfe5df1df~tplv-tt-large.image" />



6.禁用WebDAV

Nginx支持webdav,虽然默认情况下不会编译。如果使用webdav,则应该在Nginx策略中禁用此规则。
加固方法: dav_methods 应设置为off



7.禁用Nginx状态模块

当访问一个特制的URL时,如"../nginx.status",stub_status模块提供一个简短的Nginx服务器状态摘要,大多数情况下不应启用此模块。
加固方法:nginx.conf文件中stub_status不应设置为:on



8.关闭默认错误页上的Nginx版本号

如果在浏览器中出现Nginx自动生成的错误消息,默认情况下会包含Nginx的版本号,这些信息可以被攻击者用来帮助他们发现服务器的潜在漏洞
加固方法: 关闭"Server"响应头中输出的Nginx版本号将server_tokens应设置为:off

server_tokens off



9.设置client_body_timeout超时

client_body_timeout设置请求体(request body)的读超时时间。仅当在一次readstep中,没有得到请求体,就会设为超时。超时后Nginx返回HTTP状态码408(Request timed out)。
加固方法:nginx.conf文件中client_body_timeout应设置为:10



10.设置client_header_timeout

client_header_timeout设置等待client发送一个请求头的超时时间(例如:GET / HTTP/1.1)。仅当在一次read中没有收到请求头,才会设为超时。超时后Nginx返回HTTP状态码408(Request timed out)。

加固方法:nginx.conf文件中client_header_timeout应设置为:10



11.设置keepalive_timeout超时

keepalive_timeout设置与client的keep-alive连接超时时间。服务器将会在这个时间后关闭连接。

加固方法:nginx.conf文件中keepalive_timeout应设置为:55



12.设置send_timeout超时

send_timeout设置客户端的响应超时时间。这个设置不会用于整个转发器,而是在两次客户端读取操作之间。如果在这段时间内,客户端没有读取任何数据,Nginx就会关闭连接。

加固方法:nginx.conf文件中send_timeout应设置为:10



13.Nginx可用的方法应限制为GET, HEAD, POST

GET和POST是Internet上最常用的方法。Web服务器方法在RFC 2616中定义禁用不需要实现的可用方法。

加固方法:

#nginx.conf文件中应存在if ($request_method !~ ^(GET|HEAD|POST)$ )



14.控制并发连接limit_zone slimits

limit_zone 配置项限制来自客户端的同时连接数。通过此模块可以从一个地址限制分配会话的同时连接数量或特殊情况。

加固方法:nginx.conf文件中limit_zone应设置为:slimits $binary_remote_addr 5m

# 设定保存各个键(例如$binary_remote_addr)状态的共享内存空间的参数,zone=空间名字:大小大小的计算与变量有关limit_conn_zone $binary_remote_addr zone=ops:10m;



15.控制并发连接limit_conn slimits

该配置项控制一个会话同时连接的最大数量,即限制来自单个IP地址的连接数量。

加固方法:nginx.conf 文件中 limit_conn 应设置为: slimits 5

# 表示同一IP同一时间只允许10个连接limit_conn ops 5;



16.主机防webshell跨目录浏览以及列目录

加固方法:

a.在nginx.conf里把每个虚拟主机站点请求端口给区别开b.为每个站点建一个conf,并进行配置c.修改php-fpm启动脚本d.启动服务#在main-http-server段中设置开启或者关闭(对于需要列目录的则开启,否则默认是关闭的)autoindex off



17.文件名解析漏洞php_info,加入fcgi.conf即可

if ($request_filename ~* (.*)\.php) { set $php_url $1;}if (!-e $php_url.php) { return 403;}



18.访问权限控制nginx

加固方法:

#nginx.conflocation ~ ^/script/ { auth_basic "welcome to weiyigeek.github.io"; auth_basic_user_file /var/www/test/script/.htpasswd;}#建立htpasswd密码进行认证mkdir /var/www/test/scriptperl -e "print crypt('baidu.eud',"n");"nnUygd3RSf3u6echo 'nginx:nnUygd3RSf3u6' > /var/www/test/script/.htpasswd/usr/local/nginx/sbin/nginx -s reload

检测代理服务器设置,检查浏览器的代理服务器设置是否正确(安全开发运维必备的Nginx代理Web服务器性能优化与安全加固配置)



19.异常状态返回200隐藏URL

解决办法:

server{ listen 80; server_name weiyigeek.top; index index.html index.htm index.php; root /data/web; error_page 404 =200 /404.jpg;}



20.安全模块的选择

# 安全检测模块选择http_sub_modulehttp_stub_status_modulexss-nginx-modulewith-http_ssl_module



21.记录访问者真实IP

描述后端获取Proxy后的真实Client的IP获取需要安装--with-http_realip_module,然后后端程序采用JAVA(request.getAttribute("X-Real-IP"))进行获取;

set_real_ip_from 100.0.0.0/8;#(这里是已知的代理ip)real_ip_header X-Forwarded-For;real_ip_recursive on;# 代理转发location / { proxy_pass http://weiyigeek.top}proxy_set_header Host $host;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;set $Real $http_x_forwarded_for;if ( $Real ~ (\d+)\.(\d+)\.(\d+)\.(\d+),(.*) ){ set $Real $1.$2.$3.$4;}proxy_set_header X-Real-IP $remote_addr;#区别$proxy_add_x_forwarded_for #较下面多一个$remote_addr的(只能获取到与服务器本身直连的上层请求ip)$http_x_forwarded_for#日志获取$http_x_real_ip|$remote_addr #前提条件是cdn 那边也设置了X-forward否则获取的是cdn的ip



22.地区访问响应措施

描述: 如果要使用geoip地区选择,我们需要再nginx编译时加入 --with-http_geoip_module 编译参数。

# 例如,访问者IP地址不为中国或者美国的都返回403。if ( $geoip_country_code !~ ^(CN|US)$ ) { return 403;}



23.资源防盗链设置

描述: 为了防止外部站点引用我们的静态资源,我们需要设置那些域名可以访问我们的静态资源。

# none : "Referer" 来源头部为空的情况# blocked : "Referer" 来源头部不为空# server_names : "Referer"来源头部包含当前的server_names(当前域名)location ~* \.(gif|jpg|png|swf|flv)$ { valid_referers none blocked weiyigeek.top server_names ~\.google\. ~\.baidu\.; #这是可以盗链的域名或IP地址,一般情况可以把google,baidu,sogou,soso,bing,feedsky,zhuaxia,photozero等域名放进来 if ($invalid_referer) { #这样设置能够防盗链,不断地302重定向很多次,可能会加重服务器的负担,所以不建议这么做,除非有单独的图片服务器支持 return 403; # 或者返回 403 错误代码 或者 JSON 字符串 # 返回json add_header Content-Type 'application/json; charset=utf-8'; return 200 "{'msg':'valid'}"; # 本地目录重写 rewrite ^/.*.(gif|jpg|jpeg|png)$ /static/qrcode.jpg last; # 重写远程URL rewrite ^/ https://www.weiyigeek.top/picture/images/details-image-1.jpg; } }



24.常规安全响应头配置

描述: 下面收集了Web服务中常规的安全响应头, 它可以保证不受到某些攻击,建议在指定的 server{} 代码块进行配置。

# HSTS (ngx_http_headers_module is required) 应该只使用 HTTPS 而不是使用 HTTP 通信add_header Strict-Transport-Security "max-age=31536000;includeSubDomains;preload" always;# XXS-Protectionadd_header X-XSS-Protection "1; mode=block";# MIME 模拟探测add_header X-Content-Type-Options nosniff;# Frame 安全控制add_header X-Frame-Options ALLOW-FROM music.163.com;# Spider Robots 爬取策略限制add_header X-Robots-Tag none;# CORS 跨域设置add_header Access-Control-Allow-Origin '*.weiyigeek.top';add_header Access-Control-Allow-Methods 'GET';add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';# CSP# 现在让我们允许自托管 scripts、images、CSS、fonts 和 AJAX,以及 jQuery CDN 托管脚本和 Google Analytics 的内容:Content-Security-Policy: default-src 'none'; script-src 'self' https://code.jquery.com https://www.google-analytics.com; img-src 'self' https://www.google-analytics.com; connect-src 'self'; font-src 'self'; style-src 'self';



25.防止非所属域名解析到服务器

描述: 为了防止某些未备案的域名或者恶意镜像站域名绑定到我们服务器上, 导致服务器被警告关停,将会对业务或者SEO排名以及企业形象造成影响,我们可以通过如下方式进行防范。

server { listen 80 default_server; server_name 82.156.18.253; # 禁止搜索引擎收录IP add_header X-Robots-Tag 'noindex,noarchive,nosnippet'; location ^~ / { # IP地址访问强制301跳转 if ( $host = 82.156.18.253 ){ return 301 https://www.weiyigeek.top/index.html; } # 请求host非指定域名时返回json if ( $host !~* weiyigeek\.top ) { add_header Content-Type 'application/json; charset=utf-8'; return 200 '{"status":"error","Author":"WeiyiGeek","Site":"https://www.weiyigeek.top","Chinese":"大佬, 请不要把你的域名解析到我的服务器上","English":"Friend, Please do not resolve your domain name to my server"}'; # return 301 https://space.bilibili.com/385802642; } }...}

执行结果:

$ curl -I 82.156.18.253HTTP/1.1 301 Moved PermanentlyServer: nginxDate: Mon, 11 Apr 2022 12:15:02 GMTContent-Type: text/htmlContent-Length: 162Connection: keep-aliveLocation: https://www.weiyigeek.top/index.htmlX-Robots-Tag: noindex,noarchive,nosnippet$ curl --insecure -I https://82.156.18.253HTTP/2 301server: nginxdate: Mon, 11 Apr 2022 12:15:24 GMTcontent-type: text/htmlcontent-length: 162location: https://www.weiyigeek.top/index.htmlx-robots-tag: noindex,noarchive,nosnippet$ curl weiyigeek.cn{"status":"error","Author":"WeiyiGeek","Site":"https://www.weiyigeek.top","Chinese":"大佬, 请不要把你的域名解析到我的服务器上","English":"Friend, Please do not resolve your domain name to my server"}



25.限制指定客户端地址访问

描述: 有时你的网站可能只需要被某一IP或者IP段的地址请求访问,那么非白名单中的地址访问将被阻止访问, 我们可以如下配置;

location / { allow 12.97.167.194; allow 12.33.1.2; allow 12.152.49.4; deny all;}



5.配置说明#

常用nginx配置文件解释:

#[Main] Nginx启动的用户(建议非root用户)user nginx;#[Main] NGINX工作进程数设置值和CPU核心数一致(优化选项)#采用 grep ^processor /proc/cpuinfo | wc -l 进行查看或者autoworker_processes auto;#[Main] 工作模式与连接数上限即每个工作进程可以处理并发的最大连接数(优化选项)events { #[Main-events] nginx作为反向代理服务器单个进程最大连接数(最大连接数=连接数*进程数) #建议与worker_rlimit_nofile一致 worker_connections 65535; #[Main-events] use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; #epoll模型是Linux 2.6以上版本内核中的高性能网络I/O模型,如果跑在FreeBSD上面,就用kqueue模型。 use epoll; #[Main-events] 提高性能和吞吐量 accept_mutex off;}#[Main] 高并发参数(通过设置cpu粘性来降低由于多CPU核切换造成的寄存器等现场重建带来的性能损耗)(优化选项)worker_cpu_affinity 0001 0010 0100 1000; #四核的时候#假如是8 cpu 分配如下: worker_cpu_affinity 00000001 00000010 00000100 00001000 0001000000100000 01000000 10000000#[Main] 默认是没有设置,可以限制为操作系统最大的限制65535。(优化选项)worker_rlimit_nofile 65535#[Main]日志位置和日志级别[ debug | info | notice | warn | error | crit ]#error_log logs/error.log;#error_log logs/error.log notice;#error_log logs/error.log info;error_log logs/error.log error;#服务进程启动文件pid /var/run/nginx.pid;#当前主配置文件包含其他的nginx模块配置文件include /etc/nginx/conf.d/*.conf; #[Main部分] http服务器提供http服务相关的一些配置参数。例如:是否使用keepalive啊,是否使用gzip进行压缩等。http { #文件扩展名与文件类型映射表 include mime.types; #默认文件类型 default_type text/html; #响应的编码格式 charset UTF-8; #服务器名字的hash表大小 server_names_hash_bucket_size 128; #缓冲区代理缓冲用户端请求的最大字节数, client_body_buffer_size 128k #上传文件大小限制 client_header_buffer_size 4k; #允许客户端请求的最大单文件字节数。如果有上传较大文件,请设置它的限制值 client_max_body_size 10m #文件访问缓存设置与系统文件描述符设置一致 open_file_cache max=65536 inactive=60s; open_file_cache_valid 80s; open_file_cache_min_uses 1; large_client_header_buffers 4 64k; #设定请求缓 #nginx日志记录格式 log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; #使用缓冲而不是每条日志记录都单独执行写操作,NGINX会缓冲一连串的日志记录使用单个操作把它们一起写到文件中。 access_log logs/access.log main buffer=1024 flush=60s; #关闭server信息头响应 server_tokens off; #[MAIN-http]开启高效文件传输模式,指定nginx是否调用sendfile函数来输出文件,减少用户空间到内核空间的上下文切换(与accept_mutex关联配置) #对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。 #系统调用可以实现从一个文件描述符到另一个文件描述符的数据拷贝,通常实现零拷贝,这能加速TCP数据传输 #当配置环境下有sendfile指令和激活内容更改过滤器的指令时NGINX会自动禁用sendfile。#(优化选项) sendfile on; #防止网络阻塞,不过要包涵在keepalived参数才有效 tcp_nopush on; tcp_nodelay on; #空闲长连接保持打开状态的时间(优化选项) #长连接请求大量小文件的时候,可以减少重建连接的开销,但假如有大文件上传120s内没上传完成会导致失败。如果设置时间过长,用户又多,长时间保持连接会占用大量资源。 keepalive_timeout 120; #用于指定响应客户端的超时时间。这个超时仅限于两个连接活动之间的时间,如果超过这个时间客户端没有任何活动,Nginx将会关闭连接 #send_timeout 180s 模块http_gzip## #开启gzip压缩输出,减少网络传输。 gzip on; #最小压缩文件大小(注意不能小于1k) gzip_min_length 1k; #压缩缓冲区 gzip_buffers 4 64k; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0) gzip_http_version 1.1; #压缩等级 gzip_comp_level 2; ##压缩类型,默认就已经包含text/html, gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; 模块fastcgi## #FastCGI相关参数是为了改善网站的性能:减少资源占用,提高访问速度。 # fastcgi_temp_path /tmp/fastcgi_temp; # fastcgi_cache_path /tmp/fastcgi_cache levels=1:2 keys_zone=cache_fastcgi:128m inactive=30m max_size=1g; # fastcgi_cache_key $host$request_uri; #指定的Http状态码指定缓存时间 # fastcgi_cache_valid 200 302 1h; # fastcgi_cache_valid 301 1d; # fastcgi_cache_valid any 1m; # fastcgi_cache_min_uses 1; # fastcgi_cache_use_stale error timeout http_500 http_503 invalid_header; #指定链接到后端FastCGI的超时时间。 # fastcgi_connect_timeout 300; #向FastCGI传送请求的超时时间,这个值是指已经完成两次握手后向FastCGI传送请求的超时时间。 # fastcgi_send_timeout 300; #指定接收FastCGI应答的超时时间,这个值是指已经完成两次握手后接收FastCGI应答的超时时间。 # fastcgi_read_timeout 300; #指定读取FastCGI应答第一部分需要用多大的缓冲区,这个值表示将使用1个64KB的缓冲区读取应答的第一部分(应答头),可以设置为gastcgi_buffers选项指定的缓冲区大小。 # fastcgi_buffer_size 64k; #一个php脚本所产生的页面大小为256KB,那么会分配4个64KB的缓冲区来缓存 # fastcgi_buffers 4 64k; #建议设置为fastcgi_buffer的两倍,繁忙时候的buffer # fastcgi_busy_buffers_size 128k; # fastcgi_temp_file_write_size 128k; #[Main-http]配置虚拟主机设置 #http服务上支持若干虚拟主机。每个虚拟主机一个对应的server配置项,配置项里面包含该虚拟主机相关的配置 server { #[Main-http-server] ngnix监听端口 listen 80; #服务器名:虚拟主机的域名可以写多个域名,可以通过正则匹配。 server_name localhost; #实现访问http时自动跳转到https return 301 https://$host$request_uri; #access_log logs/host.access.log main; #请求正则匹配的来判断访问路径,默认访问localhost:80 访问的是下面这个路径的网页 location / { #站点根目录你网站文件存放的地方 root html; #定义路径下默认访问的文件名,一般跟着root放 index index.html index.htm; #开启限制IP连接数的时候需要使用 #limit_zone crawler $binary_remote_addr 10m; #访问控制模块默认就会安装,而且写法也非常简单,可以分别有多个allow,deny,允许或禁止某个ip或ip段访问, #依次满足任何一个规则就停止往下匹配 (安全选项) allow 192.168.10.100; allow 172.29.73.0/24; deny all; #认证访问 通过httpd-devel 工具的 htpasswd 来为访问的路径设置登录密码 (安全选项) #比如:htpasswd -c nginx.htpasswd admin 生成了默认使用CRYPT加密的密码文件# auth_basic "Nginx Status" auth_basic_user_file /usr/local/nginx/nginx.passwd #列出目录 autoindex Nginx默认是不允许列出整个目录的合适下载服务器。(非常不推荐) #如需此功能,打开nginx.conf文件,在location,server 或 http段中加入autoindex on; #autoindex on #显示出文件的确切大小单位是bytes。改为off后显示出文件的大概大小,单位是kB或者MB或者GB #autoindex_exact_size off #默认为off,显示的文件时间为GMT时间。改为on后,显示的文件时间为文件的服务器时间 #autoindex_localtime on; } #error_page 404 /404.html; #将服务器错误页面直接指向静态页面/50x.html error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } #代理PHP脚本到Apache上监听127.0.0.1:80 末尾以php或者php5结尾的 #location ~ \.(php|php5)?$ { # proxy_pass http://127.0.0.1; #} #将PHP脚本传递到正在监听127.0.0.1:9000的FastCGI服务器 #location ~ .+\.(php|php5)$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_pass unix:/tmp/php.sock; #为了安全推荐方式 # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; # fastcgi_cache cache_fastcgi; #} # 如果Apache的文档根目录与nginx的根目录一致,则拒绝访问.htaccess文件 #location ~ /\.ht { # deny all; #} #静态资源正则请求路径匹配 location ~ .+\.(gif|jpg|jpeg|png|bmp|swf|txt|csv|doc|docx|xls|xlsx|ppt|pptx|flv)$ { root e:wwwroot; expires 30d; #缓存有效期30天 access_log off; #访问记录 } #JS和CSS缓存时间设置 location ~ .+\.(js|css|html|xml)$ { expires 30d;} #访问控制也可以加入认证 location /nginx-status{ #nginx中的stub_status模块主要用于查看Nginx的一些状态信息. 本模块默认没有安装需要编译安装。 stub_status on; allow 192.168.1.0/24; allow 127.0.0.1; deny all; } } # Nginx反向代理 #[Main-http] upstream模块设置反向代理和负载均衡的连接的内部web应用服务IP端口 upstream monitor_server { #seesion记录访问的主机,比如第一次访问该服务器后就记录,之后再访问都是该服务器了-进行了绑定 ip_hash; #内网的应用服务,weigth参数表示权值越高被分配到的几率越大。 #max_fails当有max_fails个请求失败,就表示后端的服务器不可用,默认为1将其设置为0可以关闭检查 #fail_timeout 在以后的fail_timeout时间内nginx不会再把请求发往已检查出标记为不可用的服务器 server 192.168.0.131:80 weight=9 max_fails=5 fail_timeout=600s; server 192.168.0.132:80 weight=1 max_fails=5 fail_timeout=600s; } #server指令配置项 server { listen 80; #请求响应的域名 server_name blog.weiyigeek.top; location / { ## 模块http_proxy:## 反向代理主要配置 #即反向代理,对应upstream负载均衡器 proxy_pass http://monitor_server; #代理服务器相关信息头设置 proxy_redirect off; #如果是有涉及redirect的服务,一定要加上端口8081,否 则默认tomcat在redirect时候默认找80端口 proxy_set_header Host $host; #转发请求的原IP地址,程序中通过request.getHeader("Proxy-Client-IP")获得ip proxy_set_header X-Real-IP $remote_addr; #端的Web服务器可以通过X-Forwarded-For获取用户真实IP proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; ##nginx跟后端服务器连接超时时间(代理连接超时) #模块http_proxy代理超时设置 proxy_connect_timeout 60s; ##nginx跟后端服务器连接超时时间(代理连接超时) proxy_read_timeout 60s; #后端服务器数据回传时间(代理发送超时) 间 proxy_send_timeout 30s; #设置代理服务器(nginx)从后端realserver读取并保存用户头信息的缓冲区大小,默认与proxy_buffers大小相同,其实可以将这个指令值设的小一点 proxy_buffer_size 4k #proxy_buffers缓冲区,nginx针对单个连接缓存来自后端realserver的响应,网页平均在32k以下的 proxy_buffers 4 32k #高负荷下缓冲大小(proxy_buffers*2) proxy_busy_buffers_size 64k #当proxy_buffers放不下后端服务器的响应内容时,会将一部分保存到硬盘的临时文件中,这个值用来设置最大临时文件大小,默认1024M #它与proxy_cache没有关系。大于这个值,将从upstream服务器传回。设置为0禁用。 proxy_max_temp_file_size 0 #当缓存被代理的服务器响应到临时文件时,限制每次写临时文件的大小。proxy_temp_path(可以在编译的时候)指定写到哪那个目录。 proxy_temp_file_write_size 64k #把cookie的作用域替换成我们的域名。 #proxy_cookie_domain google.com.hk www.example.com; #proxy_set_header Host "www.google.com.hk"; #设置反向代理得header请求头 #proxy_redirect http://www.google.com.hk/ ; #重定向 #proxy_redirect http:// https://; #sub_filter www.google.com.hk www.example.com; #把谷歌的域名替换成自己的,注意需要安装nginx的sub_filter模块 #反向代理的配置. END } #本地动静分离反向代理配置 #所有jsp的页面均交由tomcat或resin处理 location ~ .(jsp|jspx|do)?$ { 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 http://127.0.0.1:8080; } #所有静态文件由nginx直接读取不经过tomcat或resin location ~ \.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ { expires 15d; } location ~ \.(js|css)$ { expires 1h; } } # 另一个虚拟主机,混合使用IP、名称和基于端口的配置 server { listen 80; listen [::]:80; server_name weiyigeek.top; return 301 https://$host$request_uri; } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name weiyigeek.top; # HSTS (ngx_http_headers_module is required) 应该只使用 HTTPS 而不是使用 HTTP 通信 add_header Strict-Transport-Security "max-age=31536000;includeSubDomains;preload" always; # XXS-Protection add_header X-XSS-Protection "1; mode=block"; # MIME 模拟探测 add_header X-Content-Type-Options nosniff; # Frame 安全控制 add_header X-Frame-Options ALLOW-FROM music.163.com; # Spider Robots 爬取策略限制 # add_header X-Robots-Tag none; # 不限制 # add_header X-Robots-Tag noindex, noarchive, nosnippet; # 限制 # 开启 SSL ,如果想http 与 https 公用一个配置则可以将其注释( the "ssl" directive is deprecated ) # ssl on; # 配置证书链与证书密钥 ssl_certificate /etc/nginx/ssl/fullchain.cer; ssl_certificate_key /etc/nginx/ssl/weiyigeek.top.key; # ssl会话复用超时时间以及会话复用缓存大小 ssl_session_timeout 1d; ssl_session_cache shared:MozSSL:10m; # about 40000 sessions # 配置双证书时开启否则应该关闭 ssl_session_tickets off; ## OCSP stapling ssl_stapling on; ssl_stapling_verify on; # 使用根 CA 和中间证书验证 OCSP 响应的信任链 ssl_trusted_certificate /etc/nginx/ssl/ca.cer; # 仅使用ECDH是不用配置ssl_dhparam的否则你应该为它配置上 # curl https://ssl-config.mozilla.org/ffdhe2048.txt > /path/to/dhparam ssl_dhparam /path/to/dhparam; # 兼容性较为通用的SSL协议与加密算法套件 ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE:ECDH:AES:HIGH:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:!NULL:!aNULL:!eNULL:!EXPORT:!PSK:!ADH:!DH:!DES:!MD5:!RC4; # 安全配置: ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4:!DH:!DHE; # 证书常规握手加密算法方式共十八个,ECDHE、DHE、AES开头分别6个 ; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:HIGH:!NULL:!aNULL:!eNULL:!EXPORT:!PSK:!ADH:!DES:!MD5:!RC4; # 为了兼容性推荐服务器自动选择要使用的算法套件 ssl_prefer_server_ciphers on; # replace with the IP address of your resolver resolver 223.6.6.6 8.8.8.8 192.168.12.254; }}


6.补充知识#

(1) 阿里巴巴提供的Concat或者Google的PageSpeed模块实现这个合并文件的功能。

  • Concat源代码网址:https://github.com/alibaba/nginx-http-concat/
  • PageSpeed源代码网址:https://github.com/pagespeed/ngx_pagespeed。



(2) PHP-FPM的优化
如果您高负载网站使用PHP-FPM管理FastCGI对于PHP-FPM的优化非常重要

  • 1.增加FastCGI进程数:把PHP FastCGI子进程数调到100或以上,在4G内存的服务器上200就可以建议通过压力测试获取最佳值。
  • 2.增加 PHP-FPM打开文件描述符的限制

# vi /path/to/php-fpm.conf找到“1024”,把1024更改为 4096 或者更高,之后重启 PHP-FPM# /etc/security/limits.conf* hard nofile 65536* soft nofile 65536

  • 3.适当增加max_requests: 标签max_requests指明了每个children最多处理多少个请求后便会被关闭默认的设置是500。



(3) 配置Resin on Linux或者Windows为我们可以打开 resin-3.1.9/bin/httpd.sh 在不影响其他代码的地方加入:-Dhttps.protocols=TLSv1.2, 例如

exec $JAVA_EXE -jar -Dhttps.protocols=TLSv1.2 ${RESIN_HOME}/lib/resin.jar $*#exec $JAVA_EXE -jar ${RESIN_HOME}/lib/resin.jar $*

原文地址: https://blog.weiyigeek.top/2019/9-2-122.html

本文关键词:检查浏览器的代理服务器设置是否正确,检查代理服务器设置是什么意思连不上网,代理服务器测试,检查代理服务器设置,检测代理服务器设置错误。这就是关于《检测代理服务器设置,检查浏览器的代理服务器设置是否正确(安全开发运维必备的Nginx代理Web服务器性能优化与安全加固配置)》的所有内容,希望对您能有所帮助!

本文链接:https://bk.89qw.com/a-437529

最近发表
网站分类