Nginx安装及配置虚拟主机
nginx安装部分
依赖环境
yum -y install gcc zlib openssl-devel zlib-devel
1. 下载好下面两个包:
nginx-1.8.1.tar.gz
pcre-8.36.tar.gz
2. 为了支持rewrite功能,我们需要安装pcre
http://ftp.exim.llorien.org/pcre/pcre-8.36.tar.gz
tar xf pcre-8.36.tar.gz -C /usr/src/ ./configure --prefix=/usr/local/pcre --enable-utf8 --enable-jit make && make install
configure: error: You need a C++ compiler for C++ support. yum install gcc-c++
3.安装openssl
需要ssl的支持,如果不需要ssl支持,请跳过这一步
yum -y install openssl*
4. 安装nginx
#下载地址http://nginx.org/download/nginx-1.8.1.tar.gz #tar xf nginx-1.8.1.tar.gz # cd nginx-1.8.1 # ./configure --prefix=/usr/local/nginx --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/run/nginx/nginx.lock --user=daemon --group=daemon --with-pcre=/usr/src/pcre-8.36 --with-threads #make && make install ##################注意:--with-pcre后面跟的是pcre的解压路径,赌五毛
--prefix=/usr/local/nginx #指定nginx 的安装路径
--error-log-path=/var/log/nginx/error.log #指定nginx错误日志的路径
--http-log-path=/var/log/nginx/access.log #指定用户访问http时信息保存路径
--pid-path=/var/run/nginx/nginx.pid #指定nginx的PID我i只
--lock-path=/var/run/nginx/nginx.lock
--user=daemon --group=daemon #指定nginx的用户和组
--with-pcre=/usr/src/pcre-8.36 --with-threads #为了支持rewrite重写功能,指定pcre解压路径
###########################附加常用选项--------------------------------
--with-http_stub_status_module:支持nginx状态查询 --with-http_ssl_module:支持https --with-http_spdy_module:支持google的spdy,想了解请百度spdy,这个必须有ssl的支持
-------------------------------------------------------------------
对nginx主配置文件进行修改
# cd /usr/local/nginx/
client_body_temp fastcgi_temp logs sbin uwsgi_temp
conf html proxy_temp scgi_temp
#conf:存放了nginx的配置文件
#html:网页存放目录
#sbin:nginx服务启动目录
#cd conf/ #vim nginx.conf #nginx的主配置文件 user daemon; #主模块指令,指定 Nginx Worker 进程运行用户以及用户组,默认由 nobody 账号运行。 worker_processes 1; #主模块指令,指定了 Nginx 要开启的进程数。每个 Nginx 进程平均耗费 10M~12M 内存。根据经验,一般指定一个进程足够了,如果是多核 CPU,建议指定和 CPU 的数量一样的进程数即可,可以用/proc/cpuinfo |grep process查看系统cpu数 error_log logs/error.log warn; #主模块指令,用来定义全局错误日志文件。日志输出级别有debug、info、notice、warn、error、crit 可供选择,其中,debug 输出日志最为最详细,而 crit 输出日志最少。 pid /var/run/nginx/nginx.pid; #主模块指令,用来指定进程 id 的存储文件位置。 events { #设定 Nginx 的工作模式及连接数上限 worker_connections 1024; #worker_connections 也是个事件模块指令,用于定义 Nginx 每个进程的最大连接数,默认是 1024.最大客户端连接数由 worker_processes 和worker_connections 决定,即Max_client=worker_processes*worker_connections,在作为反向代理时,max_clients 变为:max_clients = worker_processes * worker_connections/4进程的最大连接数受 Linux 系统进程的最大打开文件数限制,在执行操作系统命令“ulimit -n 65536”后 worker_connections 的设置才能生效。 } #下面这段内容是 Nginx 对 HTTP 服务器相关属性的配置 http { include mime.types; #主模块指令,实现对配置文件所包含的文件的设定,可以减少主配置文件的复杂度。类似于 Apache 中的 include 方法。 default_type application/octet-stream; #属于 HTTP 核心模块指令,这里设定默认类型为二进制流,也就是当文件类型未定义时使用这种方式,例如在没有配置 PHP 环境时,Nginx 是不予解析的,此时,用浏览器访问 PHP 文件就会出现下载窗口。 #log_format 是 Nginx 的 HttpLog 模块指令,用于指定 Nginx 日志的输出格式。main 为此日志输出格式的名称,可以在下面的 access_log 指令中引用。 log_format main '$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/access.log main; #client_max_body_size 20m; 用来设置允许客户端请求的最大的单个文件字节数。 #client_header_buffer_size 32K; 用于指定来自客户端请求头的 headerbuffer 大小。对于大多数请求,1K 的缓冲区大小已经足够,如果自定义了消息头或有更大的 Cookie,可以增加缓冲区大小。这里设置为 32K。 #large_client_header_buffers 4 32k; 用来指定客户端请求中较大的消息头的缓存最大数量和大小,“4”为个数,“32K”为大小,最大缓存量为 4 个 32K。 sendfile on; #用于开启高效文件传输模式。 tcp_nopush 和 tcp_nodelay 两个指令设置为将on 用于防止网络阻塞。 tcp_nopush on; keepalive_timeout 10; #设置客户端连接保持活动的超时时间。在超过这个时间之后,服务器会关闭该连接。 #下面配置 Nginx 的 HttpGzip 模块。这个模块支持在线实时压缩输出数据流 gzip on; #用于设置开启或者关闭 gzip 模块,“gzip on”表示开启 GZIP 压缩,实时压缩输出数据流。 gzip_min_length 2k; #设置允许压缩的页面最小字节数,页面字节数从 header 头的Content-Length 中获取。默认值是 0,不管页面多大都进行压缩。建议设置成大于 1K 的字节数,小于 1K 可能会越压越大。 gzip_buffers 4 8k; #表示申请 4 个单位为 8K 的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储 gzip 压缩结果。 gzip_http_version 1.1; #用于设置识别 HTTP 协议版本,默认是 1.1,目前大部分浏览器已经支持 GZIP 解压,使用默认即可。 gzip_comp_level 6; #用来指定 GZIP 压缩比, 压缩比最小,1处理速度最快; 压缩比最大,9传输速度快,但处理最慢,也比较消耗 cpu 资源。 gzip_types test/plain application/x-javascript test/css application/xmli application/xml+rss test/javascript image/jpg image/gif image/png; #用来指定压缩的类型,无论是否指定,“text/html”类型总是会被压缩的 #下面介绍对虚拟主机的配置。建议将对虚拟主机进行配置的内容写进另外一个文件,然后通过include 指令包含进来,这样更便于维护和管理。 server { #server 标志定义虚拟主机开始 listen 80; #listen 用于指定虚拟主机的服务端口 server_name www.sxkj.com; #用来指定 IP 地址或者域名,多个域名之间用空格分开 charset utf-8; #设置网页的默认编码格式。 #access_log logs/host.access.log main; #用来指定此虚拟主机的访问日志存放路径,最后的 main 用于指定访问日志的输出格式。 location / { #指定虚拟主机的根目录 root /web/; index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # #error_page 500 502 503 504 /50x.html; error_page 404 /404.html; location = /404.html { root /web/error; }
-------------------------------------------------------------------
# cat /proc/cpuinfo |grep process //查看系统
processor : 0
-------------------------------------------------------------------
# /usr/local/nginx/sbin/nginx \\启动nginx
# /usr/local/nginx/sbin/nginx -s stop \\停止nginx
# /usr/local/nginx/sbin/nginx -s reload \\重载配置文件
安装Nginx就到这里止步了,,以下是配置虚拟主机部分,若是需要就继续,不需要就跳转把...
配置部分
nginx配置虚拟主机
1)、nginx配置多个虚拟主机,也就是我们通常说的配置域名.接下来我们配置两个域名a.losbyday.com,b.losbyday.com。
我们站点统一放到/www下,每个站点根目录名称都和域名相同,并且建立日志文件具体如下。
#新建a.ttlsa.com的站点根目录 mkdir -p /www/a.losbyday.com #新建a站的首页index.html echo "this is a.losbyday.com" >>/www/a.losbyday.com/index.html #新建b.ttlsa.com站点根目录 mkdir -p /www/b.losbyday.com #新建b站首页index.html,内容如this is b.losbyday.com! echo "this is b.losbyday.com" >>/www/b.losbyday.com/index.html #新建日志文件目录 mkdir -p /usr/local/nginx/logs/nginx
2)、配置nginx主配置文件nginx.conf
先配置nginx日志格式,在nginx.conf找到如下内容,并且将#注释标志去掉
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#虚拟主机a.losbyday.com配置
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
sendfile on;
keepalive_timeout 65;
server{
server_name a.losbyday.com;
listen 80;
root /www/a.losbyday.com; # 站点根目录(程序目录)
index index.html index.htm; # 索引文件
access_log logs/a.losbyday.com.access.log main;
location / {
}
}
# 开始配置一个域名,一个server配置段一般对应一个域名
#虚拟主机b.losbyday.com配置
server{
server_name b.losbyday.com; # 域名
listen 80;
root /www/b.losbyday.com; # 站点根目录(程序目录)
index index.html index.htm; # 索引文件
access_log logs/b.losbyday.com.access.log main;
location / {
}
}
}
配置讲解
server{}:配置虚拟主机必须有这个段。
server_name:虚拟主机的域名,可以写多个域名,类似于别名,比如说你可以配置成
server_name b.losbyday.com c.losbyday.com d.losbyday.com,这样的话,访问任何一个域名,内容都是一样的
listen 80,监听ip和端口,这边仅仅只有端口,表示当前服务器所有ip的80端口,如果只想监听127.0.0.1的80,写法如下:
listen 127.0.0.1:80
root /www/b.losbyday.com:站点根目录,你网站文件存放的地方。注:站点目录和域名尽量一样,养成一个好习惯
access_log logs/b.losbyday.com-access.log main:访问日志
location /{} 默认URLnginx location配置(URL)
------------------------------------------------
nginx -t 检查nginx配置是否ok,命令如下:
如果看到以上两行ok和successful就表示配置问题,那接下来我们启动nginx
启动nginx (或者 nginx -s reload)
访问a.losbyday.com、b.losbyday.com(我这边DNS已经解析到了192.168.1.5,在测试的情况下,我们可以通过版本hosts即可),绑定host方法如下:
讲如下内容增加到C:\Windows\System32\Drivers\etc\hosts
192.168.1.5 a.losbyday.com
192.168.1.5 b.losbyday.com
192.168.1.5 a.losbyday.com
192.168.1.5 b.losbyday.com
以上是windows绑定hosts方式,如下是linux方式
echo "192.168.1.5 a.losbyday.com 192.168.1.5 b.losbyday.com" >> /etc/hosts
--------------------------------------
使用浏览器访问这两个站点。我这边使用curl来访问。
[root@dep5 conf]# curl http://a.losbyday.com
this is a.losbyday.com! //a站点内容
[root@dep5 conf]# curl http://b.losbyday.com
this is b.losbyday.com! //b站点内容