概述 Nginx 是俄罗斯人编写的十分轻量级的HTTP 服务器,Nginx,它的发音为“engine X”, 是一个高性能的HTTP 和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器。
部署方式
官方帮助文档:http://www.nginx.cn/install
本文分别介绍了在线和离线两种环境下的安装的方式,即:
在线安装
离线安装
离线安装包
二进制安装包
源码编译安装
安装方式的选择:
如果可以在线安装则直接使用官方的源即可快速部署;如果为离线安装,则所有的安装包(源码包、二进制预编译包、rpm包、deb包)都需要提前下载并拷贝到待安装服务器上。
由于源码编译安装需要非常熟悉软件的调优参数,除非定制,一般不建议选择源码编译安装;
离线安装包(rpm包、deb包)的方式不适用于多环境规范化部署,因此生产中也不建议使用;
生产环境中,为了多环境部署的规范性,建议使用离线安装之二进制安装包。
软件说明 软件版本说明
操作系统:RedHat 7.2 和 LTS Ubuntu 16.04
Nginx:Nginx 1.12.2 和 Nginx 1.14.1
软件下载地址 本软件及依赖软件的下载地址,包括:
前提条件 依赖关系包 安装必要的软件包:RedHat系统依赖包
yum install -y openssl zlib pcre
Ubuntu系统依赖包
安装gcc g++的依赖库
sudo apt-get install build-essential sudo apt-get install libtool
安装pcre依赖库(http://www.pcre.org/) sudo apt-get update sudo apt-get install libpcre3 libpcre3-dev
安装zlib依赖库(http://www.zlib.net )
sudo apt-get install zlib1g-dev
安装步骤 在线安装_在RedHat上安装 使用本教程使用.rpm
软件包在Red Hat Enterprise Linux或CentOS Linux版本6和7上安装Nginx 1.12.2。
安装EPEL源 首先我们需要安装一个叫“epel-release”的软件包,这个软件包会自动配置yum的软件仓库。到下面的网址找你对应的CentOS版本和计算机架构:http://download.fedoraproject.org/pub/epel
64位的CentOS7,对应的地址是:https://mirrors.ustc.edu.cn/epel//7/x86_64/Packages/e/epel-release-7-11.noarch.rpm
wget https://mirrors.ustc.edu.cn/epel//7/x86_64/Packages/e/epel-release-7-11.noarch.rpm yum localinstall -y epel-release-7-11.noarch.rpm
安装Nginx
在线安装_在Ubuntu上安装 使用本教程在LTS Ubuntu Linux系统上安装Nginx 1.12.2。
安装Nginx sudo apt-get install nginx
离线安装_二进制手动安装 在下面的示例中,我们在/usr/local/nginx目录中安装Nginx 1.14.1
下载软件 wget http://nginx.org/download/nginx-1.14.1.tar.gz
解压软件 tar -zxvf nginx-1.14.1.tar.gz
进入解压目录
配置 ./configure --prefix=/usr/local/nginx
编译安装
配置步骤 在线源YUM安装的启动方式 如果是通过在线源YUM安装,则无需额外配置直接启动nginx服务启动服务
停止服务
重启服务
在线源DEB安装的启动方式
nginx服务在安装后启动命令:
使用以下命令停止nginx服务器:
要重新启动nginx服务器,请使用以下命令:
sudo service nginx restart
二进制包安装的启动方式 sudo /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 注意:-c 指定配置文件的路径,不加的话,nginx会自动加载默认路径的配置文件,可以通过-h查看帮助命令。
验证 执行到这一步能够成功将服务启动。
查看后台进程是否启动 ps -ef|grer nginx
查看监听端口是否启动 ss -luntp | grep nginx
Nginx配置文件详解 nginx进程数,建议设置为等于CPU总核心数. worker_processes 8; 全局错误日志定义类型,[ debug | info | notice | warn | error | crit ] error_log /var/log/nginx/error.log info; 进程文件 pid /var/run/nginx.pid; 一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值ulimit -n)与nginx进程数相除,但是nginx分配请求并不均匀,所以建议与ulimit -n的值保持一致。 worker_rlimit_nofile 65535; 工作模式与连接数上限 events { use epoll; worker_connections 65535; } 设定http服务器 http { include mime.types; default_type application/octet-stream; server_names_hash_bucket_size 128; client_header_buffer_size 32k; large_client_header_buffers 4 64k; client_max_body_size 8m; sendfile on; autoindex on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 120; fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; fastcgi_buffer_size 64k; fastcgi_buffers 4 64k; fastcgi_busy_buffers_size 128k; fastcgi_temp_file_write_size 128k; gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_http_version 1.0; gzip_comp_level 2; gzip_types text/plain application/x-javascript text/css application/xml; gzip_vary on; upstream blog.ha97.com { server 192.168.80.121:80 weight=3; server 192.168.80.122:80 weight=2; server 192.168.80.123:80 weight=3; } 虚拟主机的配置 server { listen 80; server_name aa.cn www.aa.cn ; index index.html index.htm index.php; set $subdomain '' ; if ( $host ~* "(?:(\w+\.){0,})(\b(?!www\b)\w+)\.\b(?!(com|org|gov|net|cn)\b)\w+\.[a-zA-Z]+" ) { set $subdomain "/$2 " ; } root /home/wwwroot/aa.cn/web$subdomain ; include rewrite/dedecms.conf; location ~ .*.(php|php5)?$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi.conf; } location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ { expires 10d; } location ~ .*.(js|css)?$ { expires 1h; } } 日志格式设定 log_format access '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" $http_x_forwarded_for' ;access_log /var/log/nginx/ha97access.log access; location / { proxy_pass http://127.0.0.1:88; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr ; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ; proxy_set_header Host $host ; client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90; proxy_buffer_size 4k; proxy_buffers 4 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; } 设定查看Nginx状态的地址 location /NginxStatus { stub_status on; access_log on; auth_basic "NginxStatus" ; auth_basic_user_file conf/htpasswd; } 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; } 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; } }