从零开始学习nginx



首先搭建环境:安装ubuntu,然后安装vmware tools,安装vmware tools的时候要先在虚拟机某个地方新建一个目录,然后把所以tools的文件复制过去,然后解压安装。直接解压会提示read-only file system。准备两台充当服务器的电脑,让三个电脑处于一个局域网内,并通过ipconfig找到三个主机的局域网ip,把虚拟机的上网方式设置为桥接方式,这样虚拟机和其他主机的地位是相等的,相当于局域网中一台独立的主机。配置好相关的host,linux下hosts文件在/ec/hosts,window在windows/system32/driver/etc/hosts。配置hosts是为了通过域名访问服务器。
然后执行 apt-get install nginx,我安装的是1.4.6版本的。
安装完之后,在虚拟机输入localhost,见到welcome to nginx就代表成功了,然后开始做各种实验。
首先在虚拟机上尝试在一个服务器建立多个站点。这个类似apache,主要是配置好参数,然后服务器就会根据请求去获取相关文件夹的文件了。
在nginx的默认根目录下,我的是/usr/share/nginx/html,新建两个根目录,其实就是两个网站。分别叫cyb,zym ,然后放两个index.html作测试用。
在nginx.config下加以下代码


server {
        listen          80;
        server_name     www.myserver.com;
        error_page  404  /404.html;
        error_page   500 503 504  /50x.html;
        error_log       /var/log/nginx/debug.log debug;
      root html/cyb;
index   index.html index.htm;
}
 server {
        listen          80;
        server_name     www.hello.com;
        error_page  404  /404.html; 
error_page   500 503 504  /50x.html;
        error_log       /var/log/nginx/debug.log debug;
        root html/zym; //配置网站根目录
index   index.html index.htm;
}
配置完后重启nginx,然后把起一个域名比如的起了一个是www.myserver.com,一个是www.hello.com,然后配置对应的ip是nginx所在机器的ip,然后通过域名访问,比如www.hello.com/index.html,这时候会返回对应的index.html,访问myserver的时候会访问另一个文件夹的index.html,这都是我们之前的配置文件里配置的。


然后再做一个实验,那就是反向代理和负载均衡。
反向代理大概意思就是浏览器去访问nginx,然后nginx再请求真正的服务器,而正向代理是处在客户端的,比如浏览器,我们通过正向代理去访问其他反向代理或服务器,负载均衡就是把访问某个域名的所有请求,相应地分流到该域名对应的多个服务器上,减少压力。
首先在两个充当服务器的机器上新建两个文件index.html,而且内容不一样,后面会说原因。
配置如下
upstream www.myserver.com{
       server 192.168.0.104:80;
       server 192.168.0.107:80;
   


upstream www.hello.com {
             server 192.168.0.104:80;
             server 192.168.0.107:80;
       }   //nginx代理的服务器配置,也就是真正的服务器地址




   server {
        listen          80;
        server_name     www.myserver.com;
        error_page  404  /404.html;
        location /{
proxy_pass        http://www.myserver.com;//配置负载均衡对应的upstream
proxy_set_header  X-Real-IP  $remote_addr;
        client_max_body_size  100m;


error_page   500 503 504  /50x.html;
        error_log       /var/log/nginx/debug.log debug;
      index   index.html index.htm;
}
  server {
        listen          80;
        server_name     www.hello.com;
        error_page  404  /404.html;
       location /{
proxy_pass        http://www.hello.com;
        proxy_set_header  X-Real-IP  $remote_addr;
        client_max_body_size  100m;
 
error_page   500 503 504  /50x.html;
        error_log       /var/log/nginx/debug.log debug;
       index   index.html index.htm;


}
上面的代码意思是在一个nginx服务器上配置了多个网站,并且对每个网站都做了负载均衡处理,访问对应的域名时,nginx就会把请求发到该域名实际对应的服务器上面(通过upsteam配置),然后在upstream里还可以配置分流的规则,以上是轮询处理,就是第一个请求发到第一个ip,第二个请求发到第二个ip,第三个会发到第一个ip,以此类推,还可以根据ip分流等等。改好配置,重启nginx,然后在某个主机上访问某个域名,然后强制刷新,会看到不一样的页面,这就说明了我们每次请求都发到了不同的服务器。所以我们在两个服务器上新建两个名字一样内容不一样的文件,以便看到效果,看不到效果的时候,可以强制刷新浏览器,因为浏览器有缓存。


nginx很强大,可以充当正向代理,缓存服务器,还能通过cgi和php等通信等等 。后面有机会再慢慢探索。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值