`
jayjayjays
  • 浏览: 215312 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

nginx的几点优化

阅读更多

在calomel.org这个网站上看到关于nginx的几个优化,觉得比较有用,并且能够方便大家配置nginx,所以翻译过来。

1. nginx关于服务静态文件的配置

我们的目标是配置一个服务最快且cpu/io利用最有效的服务器,更重要的是一个安全的web服务器,下面的配置文件适用于最新版nginx。

 写道
#######################################################
### Calomel.org /etc/nginx.conf BEGIN
#######################################################
#
pid /var/run/nginx.pid;
user nginx nginx;
worker_processes 2;

events {
worker_connections 1024;
}

http {
## MIME types
include mime.types;
# types {
# image/gif gif;
# image/jpeg jpg;
# image/png png;
# image/bmp bmp;
# image/x-icon ico;
# text/css css;
# text/html html;
# text/plain bob;
# text/plain txt;
}
default_type application/octet-stream;

## Size Limits
client_body_buffer_size 8k;
client_header_buffer_size 1k;
client_max_body_size 1k;
large_client_header_buffers 1 1k;

## Timeouts
client_body_timeout 5;
client_header_timeout 5;
keepalive_timeout 5 5;
send_timeout 5;

## General Options
ignore_invalid_headers on;
limit_zone gulag $binary_remote_addr 1m;
recursive_error_pages on;
sendfile on;
server_name_in_redirect off;
server_tokens off;

## TCP options
tcp_nodelay on;
tcp_nopush on;

## Compression
gzip on;
gzip_static on;
gzip_buffers 16 8k;
gzip_comp_level 9;
gzip_http_version 1.0;
gzip_min_length 0;
gzip_types text/plain text/html text/css image/x-icon image/bmp;
gzip_vary on;

## Log Format
log_format main '$remote_addr $host $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" "$http_user_agent" "$gzip_ratio"';

## Deny access to any host other than (www.)mydomain.com
server {
server_name _; #default
return 444;
}

## Server (www.)mydomain.com
server {
access_log /var/log/nginx/access.log main buffer=32k;
error_log /var/log/nginx/error.log info;
expires 31d;
limit_conn gulag 5;
listen 127.0.0.1:8080 rcvbuf=64k backlog=128;
root /disk01/htdocs;
server_name mydomain.com www.mydomain;

## SSL Options (only enable if you use a SSL certificate)
# ssl on;
# ssl_certificate /ssl_keys/mydomain.com_ssl.crt;
# ssl_certificate_key /ssl_keys/mydomain_ssl.key;
# ssl_ciphers HIGH:!ADH:!MD5;
# ssl_prefer_server_ciphers on;
# ssl_protocols SSLv3;
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;

## Only allow GET and HEAD request methods
if ($request_method !~ ^(GET|HEAD)$ ) {
return 444;
}

## Deny illegal Host headers
if ($host !~* ^(mydomain.com|www.mydomain.com)$ ) {
return 444;
}

## Deny certain User-Agents (case insensitive)
## The ~* makes it case insensitive as opposed to just a ~
if ($http_user_agent ~* (Baiduspider|Jullo) ) {
return 444;
}

## Deny certain Referers (case insensitive)
## The ~* makes it case insensitive as opposed to just a ~
if ($http_referer ~* (babes|click|diamond|forsale|girl|jewelry|love|nudit|organic|poker|porn|poweroversoftware|sex|teen|video|webcam|zippo) ) {
return 444;
}

## Redirect from www to non-www
if ($host = 'www.mydomain.com' ) {
rewrite ^/(.*)$ http://mydomain.com/$1 permanent;
}

## Stop Image and Document Hijacking
location ~* (\.jpg|\.png|\.css)$ {
if ($http_referer !~ ^(http://mydomain.com) ) {
return 444;
}
}

## Restricted Access directory
location ^~ /secure/ {
allow 127.0.0.1/32;
allow 10.10.10.0/24;
deny all;
auth_basic "RESTRICTED ACCESS";
auth_basic_user_file /var/www/htdocs/secure/access_list;
}

## Only allow these file types to document root
location / {
if ($request_uri ~* (^\/|\.html|\.jpg|\.org|\.png|\.css|favicon\.ico|robots\.txt)$ ) {
break;
}
return 444;
}

## Serve an empty 1x1 gif _OR_ an error 204 (No Content) for favicon.ico
location = /favicon.ico {
#empty_gif;
return 204;
}

## System Maintenance (Service Unavailable)
if (-f $document_root/system_maintenance.html ) {
error_page 503 /system_maintenance.html;
return 503;
}

## All other errors get the generic error page
error_page 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417
500 501 502 503 504 505 /error_page.html;
location /error_page.html {
internal;
}
}
}
#
#######################################################
### Calomel.org /etc/nginx.conf END
#######################################################

 

2. nginx关于对后端服务器的反向代理配置

有三个后端服务,一个为web内容服务,一个是论坛服务,一个为文件服务。

 

当一个请求来时,nginx代理服务器其查看url把请求定向到相应的服务器,这个配置也缓冲文件服务的内容,但是论坛的和数据下载的内容就不缓存了,这个配置也使用了压缩,更好的节省内存

 写道
#######################################################
### Calomel.org /etc/nginx.conf BEGIN
#######################################################
pid /var/run/nginx.pid;
user nginx nginx;
worker_processes 10;

events {
worker_connections 1024;
}

http {
## MIME types
#include /etc/nginx_mime.types;
default_type application/octet-stream;

## Size Limits
client_body_buffer_size 128K;
client_header_buffer_size 128K;
client_max_body_size 1M;
large_client_header_buffers 1 1k;

## Timeouts
client_body_timeout 60;
client_header_timeout 60;
expires 24h;
keepalive_timeout 60 60;
send_timeout 60;

## General Options
ignore_invalid_headers on;
keepalive_requests 100;
limit_zone gulag $binary_remote_addr 5m;
recursive_error_pages on;
sendfile on;
server_name_in_redirect off;
server_tokens off;

## TCP options
tcp_nodelay on;
tcp_nopush on;

## Compression
gzip on;
gzip_buffers 16 8k;
gzip_comp_level 6;
gzip_http_version 1.0;
gzip_min_length 0;
gzip_types text/plain text/css image/x-icon application/x-perl application/x-httpd-cgi;
gzip_vary on;

## Log Format
log_format main '$remote_addr $host $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" "$http_user_agent" '
'"$gzip_ratio"';

## Proxy options
proxy_buffering on;
proxy_cache_min_uses 3;
proxy_cache_path /usr/local/nginx/proxy_temp/ levels=1:2 keys_zone=cache:10m inactive=10m max_size=1000M;
proxy_cache_valid any 10m;
proxy_ignore_client_abort off;
proxy_intercept_errors on;
proxy_next_upstream error timeout invalid_header;
proxy_redirect off;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_connect_timeout 60;
proxy_send_timeout 60;
proxy_read_timeout 60;

## Backend servers (web1 is the primary and web2 will come up if web1 is down)
upstream webbackend {
server web1.domain.lan weight=10 max_fails=3 fail_timeout=30s;
server web2.domain.lan weight=1 backup;
}

server {
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log;
index index.html;
limit_conn gulag 50;
listen 127.0.0.1:80 default;
root /usr/local/nginx/html;
server_name _;

## Only requests to our Host are allowed
if ($host !~ ^(mydomain.com|www.mydomain.com)$ ) {
return 444;
}

## Only allow these request methods
if ($request_method !~ ^(GET|HEAD|POST)$ ) {
return 444;
}

## Only allow these file types to document root
location / {
if ($request_uri ~* (^\/|\.html|\.jpg|\.pl|\.png|\.css|\.ico|robots\.txt)$ ) {
break;
}
return 444;
}

## PROXY - Forum
location /forum/ {
proxy_pass http://forum.domain.lan/forum/;
}

## PROXY - Data
location /files/ {
proxy_pass http://data.domain.lan/;
}

## PROXY - Web
location / {
proxy_pass http://webbackend;
proxy_cache cache;
proxy_cache_valid 200 24h;
proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;
proxy_ignore_headers Expires Cache-Control;
}

## All other errors get the generic error page
error_page 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417
500 501 502 503 504 505 506 507 /error_page.html;
location /error_page.html {
internal;
}
}
}
#
#######################################################
### Calomel.org /etc/nginx.conf END
#######################################################
 
分享到:
评论

相关推荐

    Nginx和Varnish优化补充

    对于Nginx的配置优化,有几个关键点需要了解: 1. tcp_nopush: 这个指令建议Nginx在一个数据包里发送所有头信息,能够提高数据传输的效率和吞吐率。通常建议开启此选项。 2. tcp_nodelay: 此指令指示Nginx不要缓存...

    nginx优化.pdf

    ### Nginx优化知识点 #### 一、Nginx配置文件优化 在Nginx配置文件中,有多个参数可以直接影响其性能表现,特别是在高并发场景下。下面将详细介绍几个关键参数及其设置策略: 1. **`worker_processes`**:表示...

    nginx配合PHP安装,优化使用教程

    为了优化Nginx和PHP的性能,可以考虑以下几点: 1. 调整Nginx的worker_processes数量以适应服务器的CPU核心数。 2. 使用缓存模块,如FastCGI缓存或Nginx的HTTP caching,以提高动态内容的响应速度。 3. 定期更新PHP...

    Nginx配置优化手册.docx

    ### Nginx配置优化手册知识点解析 #### 一、Nginx优化配置 **Nginx**是一款广泛使用的高性能Web服务器和反向代理服务器。它以其高稳定性、丰富的功能集、简单的配置文件和低资源消耗而闻名。对于Nginx的优化配置来...

    nginx-1.10.2

    在安装这个版本时,用户需要注意以下几点: 1. **系统兼容性**:检查你的操作系统是否与 `nginx-1.10.2` 兼容,通常来说,它应该能运行在大多数主流的Linux发行版上。 2. **依赖库**:在安装前确保系统已安装了...

    nginx-1.21.6及Nginx依赖的rpm安装包

    Nginx-1.21.6是Nginx的一个特定版本,包含了已知的性能优化和安全修复。 2. **RPM安装包**: RPM是Red Hat Package Manager的缩写,是Linux发行版如CentOS中的软件包管理器。RPM用于安装、升级、查询和卸载软件,...

    nginx源码 1.18版

    Nginx的源码主要由以下几个核心模块组成: 1. **事件模型**:Nginx采用异步非阻塞的事件处理机制,如epoll、kqueue等,确保在高并发环境下高效运行。这使得Nginx能处理大量并发连接,且内存占用低。 2. **网络处理...

    agentzh写的Nginx教程

    9. 作者的背景:agentzh在过去的几年里在Nginx领域做了很多工作,致力于分享他所完成的工作和学到的知识。 10. 文章发布平台:教程系列文章将发布在新浪博客上,网址为***,并且是用中文发布的。 11. 未来计划:...

    nginxWindows版,自带rtmp服务模块

    在使用这个压缩包时,需要注意以下几点: 1. **安装位置**:根据描述,这个Nginx版本需要放置在C盘根目录下运行。这是因为某些服务器配置可能需要特定的路径,或者Windows服务的设置可能要求程序位于特定的系统路径...

    nginx1.21.6压缩包

    在部署和运维Nginx 1.21.6时,需要注意以下几点: 1. **安装配置**:根据系统环境选择合适的安装方式,如编译安装或使用包管理器安装。配置文件`nginx.conf`需根据实际需求进行调整。 2. **日志管理**:合理配置...

    第二十九章:Nginx应用优化1

    在优化Nginx服务器的性能和安全性方面,有几个关键的配置和策略需要关注。以下是对标题和描述中提及的知识点的详细说明: 1. **隐藏Nginx版本号**: 隐藏Nginx服务器的版本号可以增加系统的安全性,避免黑客利用...

    [官方]Complete NGINX Cookbook

    书中的知识点主要可以分为以下几个部分: 1. **基础配置**:介绍如何安装NGINX,理解其基本工作原理,包括事件模型和多进程模型。学习如何编写基本的配置文件,设置监听端口,处理HTTP请求,并理解配置文件的层次...

    教你平滑升级Nginx版本.docx

    Nginx 作为一个后起之秀,在最近几年里以高性能、高并发的优势迅速占有的市场,Nginx 可以接收五万左右的并发量,目前也是没有那个 Web 服务器软件可以做到的。 MySQL/MariaDB 数据库 MySQL/MariaDB 数据库是目前...

    nginx服务器集群及优化部署实操记录集合.zip

    本篇文章将深入探讨“Nginx服务器集群及优化部署”的实践知识,结合“nginx服务器集群及优化部署实操记录集合.doc”文档中的内容,我们将详细阐述以下几个关键知识点: 1. **Nginx服务器集群** - **负载均衡**:...

    离线安装nginx.zip

    在离线安装Nginx之前,我们需要了解以下几个关键知识点: 1. **Nginx的安装需求**:Nginx的安装通常需要依赖一些基础库,如pcre(Perl Compatible Regular Expressions)、openssl和zlib等。这些库提供了Nginx处理...

    Nginx漏洞扫描器GUI版

    在使用Nginx漏洞扫描器GUI版时,需要注意以下几点: - 扫描前备份重要数据,避免因误操作导致数据丢失。 - 在非生产环境中进行测试扫描,避免影响正常服务。 - 及时跟进扫描结果,快速修复发现的问题。 - 定期更新...

    cluster+apache+nginx

    这个标题和描述涉及到的知识点主要集中在如何将Apache HTTP Server和Nginx通过集群的方式进行整合,以实现负载均衡、高可用性和优化性能。 Apache HTTP Server,常被称为Apache,是全球最广泛使用的开源Web服务器。...

    fastdfs-nginx-module_v1.16.tar.gz源码包,nginx支

    现在,我们来详细探讨FastDFS-nginx-module的几个关键知识点: 1. **FastDFS概述**:FastDFS是一个高性能、轻量级的分布式文件系统,主要解决大容量存储和负载均衡问题。它支持文件上传、下载、删除等操作,并且...

    nginx文档.zip

    本文将根据提供的压缩包文件,详细解析Nginx的相关知识点。 1. **快速入门与极简教程** "Nginx 极简教程(快速入门)" 和 "Nginx入门讲解.pptx" 提供了对Nginx的基础介绍。Nginx的安装通常包括下载源码、编译和...

Global site tag (gtag.js) - Google Analytics