Nginx服务器 、 Nginx虚拟主机 、 Nginx反向代理

###################################################################################################3

Nginx服务器:

1.轻量级http服务器,并发量高。
2.反向代理服务器。

#########################################################################################################3

准备四台虚拟机:
Web1:
eth1网卡:192.168.2.100
Web2:
eth1网卡:192.168.2.200
Proxy:
eth0网卡:192.168.4.5
eth1网卡:192.168.2.5
Client:
eth0网卡:192.168.4.100

防火墙设置为trusted
selinux设置为permissive

#################################################################################################
Proxy虚拟机:
安装nginx:
#yum -y install gcc pcre-devel openssl-devel? //安装依赖包,gcc用来源码编译,pcre-devel用来支持正则表达式,opssl-devel 用来生成密钥。
#useradd -s /sbin/nologin nginx??? //生成同名用户,目的是在使用软件时,不会是以root身份来启动或停止,防止攻击。
#tar -xf nginx-1.8.0.tar.gz??? //解包
#cd nginx-1.8.0?? ??? ??? ?
#./configure?? ??? ??? ??? ?
--prefix=/usr/local/nginx/?? ?//指定安装路径
--user=nginx?? ??? ??? ?//指定用户
--group=nginx?? ??? ??? ?//指定组
#make&&make install?? ??? ??? ?//安装
ln -s /usr/local/nginx/sbin/nginx /usr/sbin/?? ?//创建软链接

nginx的使用方法:
#nginx ?? ?//启动服务
#nginx -s stop //关闭服务
#nginx -s reload //重启服务
#nginx -V?? ??? ?//查看软件信息

nginx的配置文件及目录:
#/usr/local/nginx?? ??? ?//安装目录
#usr/local/nginx/logs?? ?//日志
#/usr/local/nginx/html?? ?//网页目录
#/usr/local/nginx/conf/nginx.conf?? ?//配置文件
#/usr/local/nginx/sbin/nginx?? ??? ?//启动脚本

nginx是否开启:
#netstat -anptu | grep "nginx" ?? ?//查看进程

##########################################################################################################3

nginx升级(版本升级,模块升级):
以模块升级为例:

#./configure --help?? ?//可以查看nginx可以添加的模块,要在nginx-1.8.0目录下操作
#./configure --with-http_ssl-module?? ?//添加这个模块,用来做https
#make?? ??? ??? ?//只需要编译即可,因为这一步用来生成启动脚本
#cp /nginx-1.8.0/objs/nginx /usr/local/nginx/sbin/nginx?? ?//所以我们只需要把这个升级后的启动脚本,复制到nginx的启动脚本位置,将原来的脚本覆盖就可以实现升级。

注意:不需要进行make install操作,这一步是用来生成html logs conf 的,如果进行这一步操作,那么之前的数据全部会被覆盖。版本升级同理。

##############################################################################################

配置nginx:

#/usr/local/nginx/conf/nginx.conf?? ?//配置文件位置
user nginx;?? ??? ?//进程所有者
error_log? logs/error_logs;?? ?//错误日志
pid ??? ????? logs/nginx.pid?? ?//pid
events {
??? worker_connections? 1024;?? ??? ?//单个进度最大并发量
}

配置容器:
# vim /usr/local/nginx/conf/nginx.conf
server {
??????? listen?????? 80;?? ??? ??? ??? ?//监听端口
??????? server_name? localhost;?? ??? ?//域名
??????? auth_basic "Input Password:";??????? //认证提示符
??????? auth_basic_user_file "/usr/local/nginx/pass";??????? //认证密码文件
??????? location / {
??????????? root?? html;?? ??? ??? ??? ?//网页默认存放目录
??????????? index? index.html index.htm;?? ?//网页格式
??????? }
? }

#yum -y install httpd-tools ?? ??? ?//用来生成密码文件的工具
#htpasswd -cm /usr/local/nginx/pass jerry?? ?//账户名为jerry,pass文件中存放的账户信息(密码为密文)。
New password: ?? ??? ??? ??? ??? ?//输入密码
Re-type new password: ?? ??? ??? ??? ?//确认密码
Adding password for user jerry?? ??? ??? ?//创建成功
#htpasswd -m /usr/local/nginx/pass? harry?? ?//追加用户不能加-c,否则就会覆盖。

Client虚拟机:
#firefox http://192.168.4.5?? ??? ?//需要输入用户名密码

######################################################################################################33、

基于域名的虚拟主机:

Proxy虚拟机:

#vim /usr/local/nginx/conf/nginx.conf

server {
?? ?? listen 80;?? ??? ?//端口
?? ?? server_name www.a.com;?? ?//域名
?? ? ......
?? ? }
server {
?? ?? listen 80;?? ??? ?? //端口
?? ??? server_name www.b.com; //域名
?? ?.......
?? ? }

Client虚拟机:
# vim /etc/hosts?? ??? ??? ?//设置本机DNS解析
192.168.4.5 www.a.com www.b.com //确保客户端可以解析这两个域名,从而去寻找192.168.4.5(服务端)

基于端口的虚拟主机:

#vim /usr/local/nginx/conf/nginx.conf

server {
?? ?? listen 8000;?? ??? ?//端口
?? ?? server_name www.a.com;?? ?//域名
?? ? ......
?? ? }
server {
?? ?? listen 8080;?? ??? ?? //端口
?? ??? server_name www.b.com; //域名
?? ?.......
?? ? }

基于ip的虚拟主机:

#vim /usr/local/nginx/conf/nginx.conf

server {
?? ?? listen 192.168.0.1:80;?? ??? ?//端口
?? ?? server_name www.a.com;?? ?//域名
?? ? ......
?? ? }
server {
?? ?? listen 192.168.0.2:80;?? ??? ?? //端口
?? ??? server_name www.b.com; //域名
?? ?.......
?? ? }

一台虚拟机可以有多张网卡,但是基于ip的虚拟主机使用很少,基本都是使用基于域名的端口的。

#########################################################################################################3

ssl虚拟主机:

Proxy虚拟机:

nginx必须安装 --with-http_ssl_module模块。

#openssl genrsa -out private.key ?? ?//生成私钥,用来解密
#openssl req -new -x509 -key private.key -out public.pem ?? ?//生成公钥(证书),用于解密

注意:私钥(private.key)和公钥(public.pem),的名称是可以随意指定的,但是要保持生成的公私钥,在/usr/local/nginx/conf/目录下,而且需要和配置文件中的名称相同。

#vim /usr/local/nginx/conf/nginx.conf

sever {
??? ?listen 443 ssl;
?? ?server_name www.c.com;
?? ?ssl_certificate public.pem;?? ?//公钥,和生成的公钥名称保持一致
?? ?ssl_certificate_key private.key?? ?//私钥,和生成的私钥名称一致
?? ?
?? ?ssl_session_cache??? shared:SSL:1m;
????? ssl_session_timeout? 5m;
?????? ?
?? ?ssl_ciphers? HIGH:!aNULL:!MD5;?? ??? ?//密码不能用这两种,这两种是公认的已经被破解的
????? ssl_prefer_server_ciphers? on;
?????? ?
?? ?location / {
??????????? root?? html;
??????????? index? index.html index.htm;
???????? }
????? }

#nginx -s reload ?? ?//重启服务

Client虚拟机:

#vim /etc/hosts
192.168.4.5 www.c.com?? ?//确保客户端可以解析此域名

#firefox https://www.c.com?? ?//信任证书之后就可以访问

##########################################################################################################

nginx反向代理:

proxy不提供页面,而是通过后端的Web1和Web2,来提供页面。与varnish反向代理不同的是,varnish有缓存页面,而nginx反向代理,相当于一个调度器,它本身是没有缓存页面的,所以效率更高。

Web1虚拟机:
#yum -y install httpd
#echo "192.168.2.100" > /var/www/html/index.html ?? ??? ?//部署测试页面
#systemctl start httpd
#systemctl enable httpd

Web2虚拟机:
#yum -y install httpd
#echo "192.168.2.200" > /var/www/html/index.html ?? ??? ?//部署测试页面
#systemctl start httpd
#systemctl enable httpd

proxy虚拟机:
#vim /usr/local/nginx/conf/nginx.conf

http {
.. ..
upstream dcc {?? ??? ??? ??? ?//添加服务器池,
??????????????? server 192.168.2.100 ;
??????????????? server 192.168.2.200 ;
??????? }
.. ..
server {
??????? listen??????? 80;
??????? server_name? www.a.com;
??????????? location / {
??????????? proxy_pass http://dcc;?? ?//当客户端访问时,读配置文件,到这一行之后,会告诉客户端,跳到dcc(服务器池),从而实现反向代理。
??????? }
}

#nginx -s reload

Client虚拟机:
#curl http://192.168.4.5 ?? ?//多次访问,查看效果。结果:192.168.2.100和192.168.2.200轮流出现。

##################################################################################################

proxy虚拟机:
#vim /usr/local/nginx/conf/nginx.conf

http {
.. ..
upstream dcc {?? ??? ??? ??? ?//添加服务器池,
??????????????? server 192.168.2.100 weight=1;?? ?//weight权重为1
??????????????? server 192.168.2.200 weight=2;?? ?//weight权重为2
??????? }
.. ..
server {
??????? listen??????? 80;
??????? server_name? www.a.com;
??????????? location / {
??????????? proxy_pass http://dcc;?? ?//当客户端访问时,读配置文件,到这一行之后,会告诉客户端,跳到dcc(服务器池),从而实现反向代理。
??????? }
}

#nginx -s reload

Client虚拟机:
#curl http://192.168.4.5 ?? ?//多次访问,查看效果。
结果:192.168.2.100出现1次? 192.168.2.200出现2次。以此循环。

##################################################################################################

proxy虚拟机:
#vim /usr/local/nginx/conf/nginx.conf

http {
.. ..
upstream dcc {?? ??? ??? ??? ?//添加服务器池,
???? server 192.168.2.100 weight=1 max_fails=1 fail_timeout=20;?? ?//weight权重为1,失败次数为1,超时时间为20。当访问192.168.2.100访问失败时(失败次数只有1次),不会再去尝试访问192.168.2.100,再过20钟之后,会再次访问192.168.2.100。 如果不想让客户端访问192.168.2.100,可以在语句后加上 down;
???? server 192.168.2.200 weight=2;?? ?//weight权重为2
??????? }
.. ..
server {
??????? listen??????? 80;
??????? server_name? www.a.com;
??????????? location / {
??????????? proxy_pass http://dcc;?? ?//当客户端访问时,读配置文件,到这一行之后,会告诉客户端,跳到dcc(服务器池),从而实现反向代理。
??????? }
}

#nginx -s reload

Client虚拟机:
#curl http://192.168.4.5 ?? ?//多次访问,查看效果。
结果:关闭192.168.2.100的http服务,然后再开启http服务,来模拟192.168.2.100故障。
就会出现,然后多次访问,一直出现192.168.2.200,20秒后,恢复正常(192.168.2.100出现1次? 192.168.2.200出现2次。以此循环)

#####################################################################################################

proxy虚拟机:
#vim /usr/local/nginx/conf/nginx.conf

http {
.. ..
upstream dcc {?? ??? ??? ??? ?//添加服务器池,
???? ip_hash;?? ??? ??? ??? ?//相同客户端访问,提供相同页面。
???? server 192.168.2.100 weight=1 max_fails=1 fail_timeout=20;?? ?//weight权重为1,失败次数为1,超时时间20
???? server 192.168.2.200 weight=2;?? ?//weight权重为2
??????? }
.. ..
server {
??????? listen??????? 80;
??????? server_name? www.a.com;
??????????? location / {
??????????? proxy_pass http://dcc;?? ?//当客户端访问时,读配置文件,到这一行之后,会告诉客户端,跳到dcc(服务器池),从而实现反向代理。
??????? }
}

#nginx -s reload

Client虚拟机:
#curl http://192.168.4.5 ?? ?//多次访问,查看效果。
结果:第一次访问出现哪个页面,接下来每次访问就是相同页面。

时间: 2024-08-04 19:25:50

Nginx服务器 、 Nginx虚拟主机 、 Nginx反向代理的相关文章

nginx的虚拟主机和反向代理和一些技巧应用

前言 nginx是什么,一般用来做反向代理,也可以用来放静态htnl等文件..当然代理tcp协议也没啥问题,但做好是别用哈.性能不咋样. 虚拟主机 什么是虚拟主机? 个人理解,比如一台主机装一个nginx,配置端口为80,向外提供服务.如果要配置第二个同样的服务,需要再另外一台主机上安装或者本机在装相同软件(注意本机端口不能重复),同样进行配置.有了虚拟主机功能,我们可以在一台主机上配置N个不同的端口,分别对外提供服务. 上配置: server { listen 801; #监听端口 serve

nginx之安装、多虚拟主机、反向代理和负载均衡

一.web服务器与web框架 1.web服务器简介 Web 网络服务是一种被动访问的服务程序,即只有接收到互联网中其他主机发出的请求后才会响应,最终用于提供服务程序的Web服务器会通过 HTTP(超文本传输协议)或 HTTPS(安全超文本传输协议)把请求的内容传送给用户. 目前能够提供 Web 网络服务的程序有 IIS.Nginx 和 Apache 等.其中,IIS(Internet Information Services,互联网信息服务)是Windows系统中默认的Web服务程序Nginx

nginx虚拟主机,反向代理实例

一.主配置文件配置: #user  nobody;worker_processes  4; error_log  logs/error.log debug_http;#error_log  logs/error.log  notice;#error_log  logs/error.log  info; #pid        logs/nginx.pid; events {    use   epoll;        #epoll是多路复用IO(I/O Multiplexing)中的一种方式,

centos上安装nginx服务器实现虚拟主机和域名重定向

Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.Nginx是由Igor Sysoev为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日.其将源代码以类BSD许可证的形式发布,因它的稳定性.丰富的功能集.示例配置文件和低系统资源的消耗而闻名.2011年6月1日,nginx 1.0.4发布. Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP

nginx服务器多虚拟主机配置

默认nginx读取的实力就是站点html下的index.html 文件,如果希望实现两个站点访问一台服务器,并且服务器响应的数据不同,则可以在nginx下的conf文件夹里配置nginx.conf文件 在目录下创建一个根站点,里面再创建两个子站点,子站点中的index.html就作为响应文件展示. myserver--->lisa------>index.html --->kevin---->index.html 站点创建完成后,开始配置站点信息:因为是多个站点所以会配置多个ser

Nginx 网站服务——虚拟主机配置

第1章 Nginx 网站服务 1.1 web网站服务介绍: 1.1.1 提供静态服务的软件 Apache:这是中小型Web服务的主流,Web服务器中的老大哥. Nginx:大型网站Web服务的主流,曾经Web服务器中的初生牛犊,现已长大. Nginx的分支Tengine(http://tengine.taobao.org/)目前也在飞速发展. Lighttpd:这是一个不温不火的优秀Web软件,社区不活跃,静态解析效率很高.在Nginx流行前,它是大并发静态业务的首选,国内百度贴吧.豆瓣等众多网

linux上nginx上配置虚拟主机的相关配置

1.配置主配置: nginx/conf/nginx.conf 2.虚拟主机配置:nginx/conf/extra/learn.weixin.com.conf 配置完后,重启服务器!

The server of Nginx(二)——Nginx访问控制和虚拟主机

一.Nginx访问控制 (1)基于授权的访问控制 Nginx于Apache一样,可以实现基于用户授权的访问控制,当客户端要访问相应网站或者目录时要求输入用户名密码才能正常访问,配置步骤与Apache基本一致 第一步:生成用户密码认证文件,使用htpasswd生成用户认证文件,如果没有该命令,可使用yum安装httpd-tools软件包,用法与之前讲解Apache认证时一样 ~]#htpasswd -c /usr/local/nginx/passwd.db test #回车后会让输入两次密码 修改

nginx安装,虚拟主机,用户认证及域名重定向

nginx安装 cd /usr/local/src/ wget http://nginx.org/download/nginx-1.14.0.tar.gz tar zxfv nginx-1.14.0.tar.gz cd nginx-1.14.0/ ./configure --prefix=/usr/local/nginx make && make install 启动文件配置vim /etc/init.d/nginx,参考下面 #!/bin/bash # chkconfig: - 30 2

Nginx(二):虚拟主机配置

什么是虚拟主机? 虚拟主机使用的是特殊的软硬件技术,它把一台运行在因特网上的服务器主机分成一台台"虚拟"的主机,每台虚拟主机都可以是一个独立的网站,可以具有独立的域名,具有完整的Intemet服务器功能(WWW.FTP.Email等),同一台主机上的虚拟主机之间是完全独立的.从网站访问者来看,每一台虚拟主机和一台独立的主机完全一样. 利用虚拟主机,不用为每个要运行的网站提供一台单独的Nginx服务器或单独运行一组Nginx进程.虚拟主机提供了在同一台服务器.同一组Nginx进程上运行多