Web服务器nginx虚拟主机与反向代理

更新时间:2024-06-25 13:02:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Web服务器nginx虚拟主机与反向代理 web 服务器 - nginx

web服务器简介:

apache,web服务器:访问网页,查找、浏览信息。 蜘蛛程序-网络爬虫

常见的web服务器: apache lighttpd nginx tomcat IIS

介绍nginx:

高性能的http服务器和反向代理服务器(web加速),运行在类unix和windows上

为什么选择nginx?

处理速度快,占用的资源少

apache里的模块是动、静结合;在nginx里面,都是静态的。 支持热部署

可以 7x24 不间断运行

书写的代码质量很高,也很规范

问题:俄国人写的,一些官方资料,文档比较少。

============================================= 安装之前: 1、准备工作:

1)apache是停止的,释放80端口

2)添加一个普通用户,出于安全的目的使用这个普通用户去运行nginx # useradd -M -s /sbin/nologin www

默认使用的是 nobody 这个用户。

2、开始安装

[root@localhost lnmp]# ls nginx--x.tar.gz nginx--x.tar.gz

[root@localhost lnmp]# tar zxvf nginx--x.tar.gz -C /usr/local/src/

安装nginx所需的软件包: pcre-8.10.tar.gz nginx-0.8.46.tar.gz

(1)PCRE:Perl库, Perl Compatible Regular Expressions 支持正则表达式

[root@localhost nginx]# tar zxvf pcre-8.10.tar.gz

[root@localhost nginx]# cd pcre-8.10 [root@localhost pcre-8.10]# ls

[root@localhost pcre-8.10]# ./configure [root@localhost pcre-8.10]# make

[root@localhost pcre-8.10]# make install

(2)安装 nginx

[root@localhost nginx]# ls nginx-0.8.46.tar.gz nginx-0.8.46.tar.gz

[root@localhost nginx]# tar zxvf nginx-0.8.46.tar.gz

[root@localhost nginx-0.8.46]# ./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --user --group --prefix --with-http_stub_status_module 状态模块 --with-http_ssl_module 支持 https yum install -y openssl-devel

[root@localhost nginx-0.8.46]# make

[root@localhost nginx-0.8.46]# make install

[root@localhost nginx-0.8.46]# cd /usr/local/nginx/ [root@localhost nginx]# ls conf html logs sbin

启动服务:

[root@localhost nginx]# ./sbin/nginx -c conf/nginx.conf

[root@localhost nginx]# netstat -antp | grep 80

tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 19449/nginx.conf

访问:http://192.168.7.253/ Welcome to nginx! OK

解读配置文件:

[root@localhost conf]# pwd /usr/local/nginx/conf

[root@localhost conf]# vim nginx.conf 1

2 user www;

3 worker_processes 1; #开启的进程数,与 CPU的核数一致,

查看CPU的信息:

[root@localhost html]# cat /proc/cpuinfo

5 #error_log logs/error.log; 错误日志 6 #error_log logs/error.log notice; 7 #error_log logs/error.log info;

redhat 5 man 5 syslog.conf redhat 6 man 5 rsyslog.conf ?

9 #pid logs/nginx.pid;**

12 events {

13 use epoll; #指定nginx使用高效的工作模式

14 worker_connections 1024; # 每个进程能够处理的最大连接数 15 } 能够处理的最大连接数=worker_processes x worker_connections use epoll; 指定nginx的工作模式 默认使用的是 select 和 poll epoll 2.6内核之后,某些发行版,比如 SUSE、redhat 支持 epoll模型

# uname -r 2.6.18-194.el5

linux 和 redhat 和 windows 有没有可比性? 其他的发行版,要想使用高效模式:kqueue BSD系列MacOS 等

# cat /etc/issue

Red Hat Enterprise Linux Server release 5.5 (Tikanga)

18 http {

19 include mime.types; #文件的扩展名和文件类型

20 default_type application/octet-stream; #文件的类型默认是二进制

22-26 访问日志

28 sendfile on; #开启高效的文件传输模式 29 #tcp_nopush on; #防止网络阻塞

31 #keepalive_timeout 0; #长连接的超时时间,秒 32 keepalive_timeout 65;

34 #gzip on; #开启gzip压缩传输数据

36 server {

37 listen 80;

38 server_name localhost; 39

40 #charset koi8-r; #字符集 41

42 #access_log logs/host.access.log main; 43

44 location / {

45 root html; == documentroot 46 index index.html index.htm; 47 } } }

页面文件的名字

虚拟主机: 基于域名的虚拟主机。 FQDN Documentroot ww1.nginx.com /htdocs/ww1 ww2.nginx.com /htdocs/ww2 default /htdocs/default

日志 迁移: 从 /usr/local/nginx/logs --> /logs(raid0)

# mkdir -p /htdocs/{ww1,ww2,default} -v 注意权限: www 进去 x

[root@localhost conf]# cd /htdocs/ww1

[root@localhost ww1]# echo \

[root@localhost ww1]# cd ../ww2

[root@localhost ww2]# echo \[root@localhost ww2]# cd ../default/

[root@localhost default]# echo \

测试配置文件是否正确:

[root@localhost nginx]# ./sbin/nginx -t

the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok configuration file /usr/local/nginx/conf/nginx.conf test is successful

重启: 用 kill 命令 给 nginx 的pid 传递一个信号,让它重新读取配置文件。

[root@localhost nginx]# cat logs/nginx.pid 19449

nginx的平滑重启:

[root@localhost nginx]# kill -HUP 19449

客户端测试: vim /etc/hosts 添加

192.168.7.253 ww1.nginx.com 192.168.7.253 ww2.nginx.com

打开浏览器: http://ww1.nginx.com/ ww1.nginx.com http://ww2.nginx.com/ ww2.nginx.com http://192.168.7.253/ default.nginx.com

----------------

nginx的日志管理 ----------------

错误日志:nginx出问题,查看错误日志,排错 访问日志:查看有哪些客户端来访问自己

log_format ww1 '$remote_addr - $remote_user [$time_local] \ '$status $body_bytes_sent \ '\

access_log logs/ww1.log ww1;

1. log_format 指定日志的格式 log_format name format

$remote_addr和$http_x_forwarded_for:记录ip地址* $remote_user:记录客户端的用户名称 $time_local:记录访问时间和时区* $request:记录请求的URL和HTTP协议 $status :记录请求状态

$body_bytes_sent :记录发送给客户端的文件的主体内容的大小 $http_referer:记录从哪个页面链接过来的 $http_user_agent:记录客户端浏览器的信息

2. access_log 指定日志的存放路径

问题: 日志轮替

写一个日志轮替的脚本,结合计划任务。1周替换一个新的日志文件? --------------

农场和斗地主: --------------

斗地主:

server ip : 192.168.7.221

[root@localhost s1]# yum install -y httpd mysql-server php php-mysql

[root@localhost html]# pwd /var/www/html

[root@localhost html]# ls ddz

[root@localhost html]# chmod -R 777 ddz/

[root@localhost html]# /etc/init.d/mysqld start

mysql> create database ddz;

mysql> grant all on ddz.* to ddzuser@\

mysql> flush privileges;

[root@localhost html]# vim +391 /etc/httpd/conf/httpd.conf DirectoryIndex index.php index.html index.html.var

[root@localhost html]# /etc/init.d/httpd restart

网页安装:http://192.168.7.221/ddz/install.php 服务器:localhost 数据库:ddz DB帐号:ddzuser DB密码:123456

QQ农场:

server ip : 192.168.7.221

[root@localhost s1]# yum install -y httpd mysql-server php php-mysql

[root@localhost Desktop]# ls

flash-plugin-10.1.102.65-release.i386.rpm qq农场.zip

[root@localhost Desktop]# unzip qq农场.zip -d /var/www/html/

[root@localhost html]# pwd /var/www/html

[root@localhost html]# mv upload/ qq [root@localhost html]# ls ddz qq

[root@localhost html]# chmod -R 777 qq

[root@localhost html]# /etc/init.d/mysqld start

mysql> create database qq;

mysql> grant all on qq.* to qquser@\

mysql> flush privileges;

[root@localhost html]# vim +391 /etc/httpd/conf/httpd.conf DirectoryIndex index.php index.html index.html.var

[root@localhost html]# /etc/init.d/httpd restart

[root@localhost qq]# pwd /var/www/html/qq

[root@localhost qq]# mysql qq < qqfarm.sql

使用的架构: LAMP:linux apache mysql php LNMP:linux nginx mysql php

====================== 验证: ====== apache: authname authtype authuserfile required user

nginx:加在虚拟主机里面

auth_basic \

auth_basic_user_file /usr/local/nginx/conf/.htpasswd;

创建这个 文件:/usr/local/nginx/conf/.htpasswd htpasswd

[root@localhost conf]# which htpasswd /usr/bin/htpasswd

[root@localhost conf]# rpm -qf `which htpasswd` httpd-2.2.3-43.el5

[root@localhost conf]# htpasswd -c /usr/local/nginx/conf/.htpasswd n1 New password:

Re-type new password: Adding password for user n1

[root@localhost conf]# htpasswd /usr/local/nginx/conf/.htpasswd n2 New password:

Re-type new password: Adding password for user n2

[root@localhost conf]# cat .htpasswd n1:xA0Jx3dx/8.oE n2:FlQ41ysXnHIPM

重启nginx: kill -HUP pid

打开浏览器,访问页面,如果出现验证的提示,就OK了。

=================== Rewrite ----------

URL 的 Rewrite,就是 URL 重写。 index.html index.jsp asp?asdhka903249871fsda 伪静态化 重定向 --> 静态页面 index.html /htdocs/ww1/index.html

location ~ /index\\.html

写在虚拟主机里:

location ~ /index\\.html { deny all; }

写完了别忘了重启服务。

location ~ /index\\.html { return 404; }

location ~ /.*\\.html$ { return 404; }

[root@localhost ww1]# pwd /htdocs/ww1

[root@localhost ww1]# ls index.html

[root@localhost ww1]# echo 123 > 123.html [root@localhost ww1]# echo 456 > 456.html

location ~ /123\\.html {

rewrite ^/123\\.html$ http://ww1.nginx.com/456.html; }

index.jsp asp?asdhka903249871fsda index.jsp\\?.*

================================ 反向代理+负载均衡

软件 7层 负载均衡:nginx L7SW( layer 7 )

配置nginx:

http { ......

upstream uplook { #定义一个 server_pool,里面有一组服务器 server 192.168.7.202; #这是3个apache的ip server 192.168.7.203; server 192.168.7.204; } server {

listen 80; location / {

proxy_pass http://uplook;

proxy_next_upstream http_500 http_502 http_503 invalid_header;

include /usr/local/nginx/conf/proxy.conf; } ...

[root@localhost conf]# vim proxy.conf proxy_redirect off;

error timeout

proxy_set_header Host $host; #设置由后端服务器获取用户的主机名

proxy_set_header X-Real_IP $remote_addr; #设置后端服务器获取用户的真实ip地址 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #设置有后端服务器获取代理者的真实ip

client_body_buffer_size 128k; #用于指定客户端请求主体缓冲区大小 proxy_connect_timeout 90; #后端服务器连接的超时时间 proxy_send_timeout 90; #后端服务器的数据传回时间 proxy_read_timeout 90; #nginx从代理的后端服务器获取信息的时间 proxy_buffer_size 4k; #缓冲区的大小 proxy_buffers 4 32k; #缓冲区的数量和大小

proxy_busy_buffers_size 64k; #系统繁忙的时候,能够使用的缓冲区大小 proxy_temp_file_write_size 64k; #指定代理缓存文件的大小

[root@localhost nginx]# ./sbin/nginx -t

这种反向代理的方式是 轮询:

upstream uplook { #定义一个 server_pool,里面有一组服务器 server 192.168.7.202; #这是3个apache的ip server 192.168.7.203; server 192.168.7.204; }

这种反向代理的方式是 设置权重值,默认是1,权重值越高分配的请求越多 upstream uplook {

server 192.168.7.202 weight=1; server 192.168.7.203 weight=2; server 192.168.7.204 weight=3; }

这种反向代理的方式是 ip_hash; upstream uplook { ip_hash;

server 192.168.7.202; server 192.168.7.203; server 192.168.7.204; } 1

这种反向代理的方式是 轮询:

upstream uplook { #定义一个 server_pool,里面有一组服务器 server 192.168.7.202; #这是3个apache的ip server 192.168.7.203; server 192.168.7.204; }

这种反向代理的方式是 设置权重值,默认是1,权重值越高分配的请求越多 upstream uplook {

server 192.168.7.202 weight=1; server 192.168.7.203 weight=2; server 192.168.7.204 weight=3; }

这种反向代理的方式是 ip_hash; upstream uplook { ip_hash;

server 192.168.7.202; server 192.168.7.203; server 192.168.7.204; } 1

本文来源:https://www.bwwdw.com/article/flo3.html

Top