2016/11/1
Nginx简介
是一个轻量级的web服务器/反向代理服务器
并发连接数
Apache 400 最大2048
Nginx 1024 最大50000
响应方式
Apache 同步访问
Nginx 异步访问 只处理静态文件 fastCGI 处理后端代码 502
LNMP框架搭建
1.准备工具
关闭RPM包安装的httpd和MYsql
保证yum源正常使用
关闭SELinux和防火墙
2.LNMP一键安装
实际上还是安装的源码包与RPM包,只是把安装的过程写成了脚本,
便于初学者安装
优点:简单、快速、方便
缺点:
不能定义安装软件的版本
不能定义所需要的软件功能
源码包的优势丧失
3.添加附加的服务时候要挂载第二块光盘
LNMP服务管理方法
lnmp相关软件安装目录
Nginx 目录 /usr/local/nginx
MySql 目录 /usr/local/mysql
MySQL数据库所在目录 /usr/local/mysql/var
PHP目录 /usr/lcoal/php
PHPMyAdmin 目录 /home/wwwroot/default/phpmyadmin
默认网站目录 /home/wwwroot/default
Nginx日志目录 /home/wwwlogs/
虚拟主机配置文件所在目录 /usr/local/ngix/conf
Nginx主配置文件 /usr/local/nginx/conf/nginx.conf
MySql配置文件 /etc/my.conf
PHP配置文件 /usr/local/php/etc/php.ini
php-fpm 配置文件 /usr/local/php/etc/php-fpm.conf
LNMP状态管理命令
LNMP状态管理 /root/lnmp
Ngix状态管理 /etc/init.d/ngix
MySql状态管理 /etc/init.d/mysql
Memcached状态管理 /etc/init.d/memcached
PHP-FPM 状态管理 /etc/init.d/php-fpm
平滑重启Nginx
好处 客户感觉不到重新启动了服务 建议所有的服务都这样启动
pkill -HUP nginx
检查服务器配置文件语法错误
/usr/local/nginx/sbin/nginx -t
Nginx配置文件
1.基本配置
event{
网络模型定义
}
http{
网站整体环境配置
server {
一个可以访问的web服务器
}
server {
一个可以访问的web服务器
}
}
2、 配置文件分析
vim /usr/local/nginx/conf/nginx.conf
user www www; #nginx服务的伪用户和伪用户组
worker_processes 1;#启动进程,通常设置成和cpu的数量相等。相当于cpu个数
error_log logs/nginx_error.log;#错误日志
pid /usr/local/nginx/nginx.pid;#主进程PID保存文件
#Specifies the value for maximum file descriptors that can be opened by this process.
#更改worker进程的最大打开文件数限制。如果没设置的话,这个值为操作系统的限制。设置后你的操作系统和Nginx可以处理比“ulimit -a”更多的文件,
所以把这个值设高,这样nginx就不会有“too many open files”问题了。
worker_rlimit_nofile 51200;
events
{
#网络I/O模型,建议linux使用epoll,FreeBSD使用kqueue
#epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能
use epoll;
#worker_connections 设置Nginx的最大访问量,修改这个配置文件也同时需要修改Linux的访问数量才能生效
#ulinit -a 查询linux 最大的连接数 ulimit -SHn 65535 设置Linux最大的文件访问量 临时生效 如果想永久生效需要现在自启动文件中
#工作进程最大允许连接数
worker_connections 51200;
}
http
#整体环境配置
{
include mime.types; #设定mime类型,文件传送类型由mime.type文件定义
default_type application/octet-stream;
server_names_hash_bucket_size 128; #保存服务器名字的hash表大小
client_header_buffer_size 32k; #客户端请求头部缓冲区大小
large_client_header_buffers 432k; #最大客户端头缓冲大小
client_max_body_size 50m; #客户端最大上传文件大小(M)
#sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用,
必须设为 on。如果用来进行下载等应用磁盘IO重负载应用,可 设置为off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.
sendfile on;
#这个是默认的,结果就是数据包不会马上传送出去,等到数据包最大时,一次性的传输出去,这样有助于解决网络堵塞。(只在sendfile on时有效)
tcp_nopush on;
keepalive_timeout 60;#连接超时时间
tcp_nodelay on;#禁用nagle算法,也即不缓存数据。
#定义fastcgi服务 处理PHP应用程序
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 256k;#fastcgi设置
#开启gzip网络压缩
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;
gzip_proxied expired no-cache no-store private auth;
gzip_disable "MSIE [1-6]\.";
#limit_zone crawler $binary_remote_addr 10m;
#隐藏nginx版本号(curl -I 192.168.4.154可以查看,更加安全)
server_tokens off;
#日志格式
log_format access '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
#定义日志格式
'"$http_user_agent" $http_x_forwarded_for';
server
{
listen 80;#监听80端口
server_name www.lnmp.org;#服务器名
index index.html index.htm index.php;#默认网页文件
root /home/wwwroot/default;#网页主目录
location ~ .*\.(php|php5)?$ # 链接URL 匹配php结尾的链接
{
#分析文件是否存在,如果不存在报404错误
try_files $uri =404;
#指定FastCGI服务器监听端口与地址。这里使用unix socket #尽量不要用socket
#nginx以unix-domain-socket方式连接fastcgi(php)。更快,适合大流量访问
#另外一种 nginx连接fastcgi的方式是http方式的[ 127.0.0.1:9000 方式连接 fastcgi(php)
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;#默认网页文件
include fcgi.conf;#fcgi.conf配置文件生效
}
#开启status状态监测 /status 链接URL status结尾的
location /status {
stub_status on;
access_log off;
}
#静态文件处理, 链接URL gif|jpg|jpeg|png|bmp|swf结尾的 缓存30天
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
# 链接URL js|css的 缓存12h
location ~ .*\.(js|css)?$
{
expires 12h;
}
#js和css文件处理,保存期12小时
#正确访问日志
access_log /home/wwwlogs/access.log access;
}
#vhost/下子配置文件生效
include vhost/*.conf;
}
虚拟主机
1.域名解析
C:\\Windows\System32\drivers\etc\hosts
/etc/hosts
2.虚拟主机
手工在nginx目录下建立vhost目录。配置文件以*.conf命名(也可以在主配置文件中直接中复制server配置文件)
在配置文件中配置如下内容
#日志格式
log_format 域名 '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
#定义日志格式
'"$http_user_agent" $http_x_forwarded_for';
server
{
listen 80;#监听80端口
server_name www.lnmp.org;#服务器名
index index.html index.htm index.php;#默认网页文件
root /home/wwwroot/default;#网页主目录
location ~ .*\.(php|php5)?$ # 链接URL 匹配php结尾的链接
{
#分析文件是否存在,如果不存在报404错误
try_files $uri =404;
#指定FastCGI服务器监听端口与地址。这里使用unix socket #尽量不要用socket
#nginx以unix-domain-socket方式连接fastcgi(php)。更快,适合大流量访问
#另外一种 nginx连接fastcgi的方式是http方式的[ 127.0.0.1:9000 方式连接 fastcgi(php)
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;#默认网页文件
include fcgi.conf;#fcgi.conf配置文件生效
}
#开启status状态监测 /status 链接URL status结尾的
location /status {
stub_status on;
access_log off;
}
#静态文件处理, 链接URL gif|jpg|jpeg|png|bmp|swf结尾的 缓存30天
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
expires 30d;
}
# 链接URL js|css的 缓存12h
location ~ .*\.(js|css)?$
{
expires 12h;
}
#js和css文件处理,保存期12小时
#正确访问日志
access_log /home/wwwlogs/access.log access;
}
Rewrite重写
域名跳转
域名解析
标记
last 停止执行当前者一轮的
break 终止Rewirte 不在继续匹配
redirect 返回临时重定向的HTTP状态302
permannent 返回永久重定向HTTP状态301
域名跳转
server
{
***
if($http_host = www.sina.com){
rewrite (.*) http://www.sohu.com permanent;
}
***
}
文件跳转
server
{
***
rewrite test /index.html last;
***
}
负载均衡
vim /usr/local/nginx/conf/nginx.conf 删除http中server内容
http
{
upstream myweb1 {
#定义地址池
server 192.168.244.10:80;
server 192.168.244.11:80;
}
server {
listen 80;
server_name www.sohu.com;#使用www.sohu.com访问
location / { #URL
proxy_pass http://myweb1; #调用地址池
#定义故障转移。后端服务器节点返回500、502、503、504和超时等错误时,
自动把请求转发到另一台服务器,转移故障。
proxy_next_upstream http_500 http_502 http_503 error timeout invalid_header;
proxy_set_header Host $host;#利用HOST变量向后端服务器传递需要解析的客户端访问的域名(传递域名)
#$remote_addr 把客户端真实IP赋予X-Forwarded-For。后端服务器才能获取真实的客户端IP。
以便记录日志,要不日志中记录的访问信息都是负载服务器,而不是客户端(传递IP)
proxy_set_header X-Forwarded-For $remote_addr;
}
}
}
Nginx服务器简介
最新推荐文章于 2022-10-10 18:19:08 发布