您的位置:首页 > 运维架构 > Nginx

Nginx安装及配置虚拟主机

2016-09-03 02:13 483 查看

    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;
}


Nginx主配置文件部分解释
-------------------------------------------------------------------
# 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站点内容
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: