`

Nginx之初体验

 
阅读更多

【一、为什么要使用nginx】

  要回答为什么要使用nginx,那就先说说nginx能做些什么。

  首先,nginx能做反向代理,那么什么是反向代理呢,举个栗子,我想在本地使用 www.mickey.com 的域名去访问 www.taobao.com。那么这个时候我们就可以通过nginx去实现。

  再者,nginx能实现负载均衡,什么是负载均衡呢?就是我的项目部署在不同的服务器上,但是通过统一的域名进入,nginx则对请求进行分发,减轻了服务器的压力。

  在上面这两种情况下,nginx服务器的作用都只是作为分发服务器,真正的内容,我们可以放在其他的服务器上,这样来,还能起到一层安全隔壁的作用,nginx作为隔离层。

  其次,nginx还能解决跨域的问题。

 

【二、、nginx安装】

   在 http://nginx.org/ 下载对应版本的nginx

   在 nginx 的目录下使用 start nginx 或者 双击 nginx.exe 打开nginx

 

【三、nginx配置属性说明】

   

复制代码

#全局设置
main 
# 运行用户 user www
-data; # 启动进程,通常设置成和cpu的数量相等 worker_processes 1; # 全局错误日志及PID文件 error_log /var/log/nginx/error.log; pid /var/run/nginx.pid; # 工作模式及连接数上限 events { use epoll; #epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能 worker_connections 1024; #单个后台worker process进程的最大并发链接数 # multi_accept on; } #设定http服务器,利用它的反向代理功能提供负载均衡支持 http { #设定mime类型,类型由mime.type文件定义 include /etc/nginx/mime.types; default_type application/octet-stream; #设定日志格式 access_log /var/log/nginx/access.log; #sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用, #必须设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime. sendfile on; #将tcp_nopush和tcp_nodelay两个指令设置为on用于防止网络阻塞 tcp_nopush on; tcp_nodelay on; #连接超时时间 keepalive_timeout 65; #开启gzip压缩 gzip on; gzip_disable "MSIE [1-6]\.(?!.*SV1)"; #设定请求缓冲 client_header_buffer_size 1k; large_client_header_buffers 4 4k; include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; #设定负载均衡的服务器列表 upstream mysvr { #weigth参数表示权值,权值越高被分配到的几率越大 #本机上的Squid开启3128端口 server 192.168.8.1:3128 weight=5; server 192.168.8.2:80 weight=1; server 192.168.8.3:80 weight=6; } server { #侦听80端口 listen 80; #定义使用www.xx.com访问 server_name www.xx.com; #设定本虚拟主机的访问日志 access_log logs/www.xx.com.access.log main; #默认请求 location / { root /root; #定义服务器的默认网站根目录位置 index index.php index.html index.htm; #定义首页索引文件的名称 fastcgi_pass www.xx.com; fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name; include /etc/nginx/fastcgi_params; } # 定义错误提示页面 error_page 500 502 503 504 /50x.html; location = /50x.html { root /root; } #静态文件,nginx自己处理 location ~ ^/(images|javascript|js|css|flash|media|static)/ { root /var/www/virtual/htdocs; #过期30天,静态文件不怎么更新,过期可以设大一点,如果频繁更新,则可以设置得小一点。 expires 30d; } #PHP 脚本请求全部转发到 FastCGI处理. 使用FastCGI默认配置. location ~ \.php$ { root /root; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /home/www/www$fastcgi_script_name; include fastcgi_params; } #设定查看Nginx状态的地址 location /NginxStatus { stub_status on; access_log on; auth_basic "NginxStatus"; auth_basic_user_file conf/htpasswd; } #禁止访问 .htxxx 文件 location ~ /\.ht { deny all; } } #第一个虚拟服务器 server { #侦听192.168.8.x的80端口 listen 80; server_name 192.168.8.x; #对aspx后缀的进行负载均衡请求 location ~ .*\.aspx$ { root /root;#定义服务器的默认网站根目录位置 index index.php index.html index.htm;#定义首页索引文件的名称 proxy_pass http://mysvr;#请求转向mysvr 定义的服务器列表 #以下是一些反向代理的配置可删除. proxy_redirect off; #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; #允许客户端请求的最大单文件字节数 client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数, proxy_connect_timeout 90; #nginx跟后端服务器连接超时时间(代理连接超时) proxy_send_timeout 90; #后端服务器数据回传时间(代理发送超时) proxy_read_timeout 90; #连接成功后,后端服务器响应时间(代理接收超时) proxy_buffer_size 4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小 proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的话,这样设置 proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2) proxy_temp_file_write_size 64k; #设定缓存文件夹大小,大于这个值,将从upstream服务器传 } } }
复制代码

 

【四、nginx反向代理】

   本地起两个项目,源码在此

   分别在这两个文件夹下面运行

   

  

npm install
node server.js

 

在浏览器输入

本机ip:4789

本机ip:5789

可以访问到这两个页面

接着我们想使用

test.nginx.com访问到 页面5789
test.nginx.com/bug 访问到页面5789
 
则我们首先需要配置hosts
win 下hosts 的地址为 C:\Windows\System32\drivers\etc
我们需要在hosts文件里面添加如下配置
 
172.18.144.23 test.nginx.com

 

然后在 nginx 的 http 模块上添加一个 server

复制代码
server {
        listen       80;
        server_name  test.nginx.com;
        
        location / {
            proxy_pass   http://172.18.144.23:4789/;
        }

        location /buy {
            proxy_pass   http://172.18.144.23:5789/;
        }                

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }
复制代码

 

然后重启nginx

在浏览器输入 test.nginx.com

在浏览器输入 test.nginx.com/bug

 

反向代理就这样子啦。

 

【五、nginx负载均衡】

 在nginx中配置http

首先配置负载均衡的服务

在http模块中添加如下配置

upstream webservers {
        server 172.18.144.23:4789 weight=10;
        server 172.18.144.23:5789 weight=10;
    }

 

把server改为

复制代码
server {
        listen       80;
        server_name  test.nginx.com;
        
        location / {
            proxy_pass   http://webservers;
        }

        location /buy {
            proxy_pass   http://172.18.144.23:5789/;
        }            

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

    }
复制代码

 

在浏览器输入 test.nginx.com,刷新,我们可以看到两种页面,说明nginx已经把我们的请求分发到不同的地方去了。

分享到:
评论

相关推荐

    nginx+tomcat7+memcached集成 负载均衡初体验

    标题 "nginx+tomcat7+memcached集成 负载均衡初体验" 涉及的是一个常见的Web服务器和应用服务器的集成方案,用于提升网站性能和处理能力。在这个组合中,nginx作为前端反向代理服务器,负责负载均衡;Tomcat7是Java...

    Web基础——WebApp之初体验(三)

    在本篇关于“Web基础——WebApp之初体验(三)”的文章中,我们将深入探讨Web应用程序(WebApp)的关键概念和技术,以及它们如何为用户提供便捷的在线体验。WebApp是互联网技术的重要组成部分,它们允许用户在浏览器...

    ExtJS4之初体验

    ### ExtJS4之初体验 #### 一、准备工作 在开始使用ExtJS4进行开发之前,我们需要做一些基础的准备工作,确保开发环境已经搭建好,并且能够顺利地运行第一个ExtJS4程序。 ##### 1. 浏览器兼容性 ExtJS4支持大部分...

    Nginx白皮书

    HTTP/2 的推出标志着 Web 技术发展的一个重要里程碑,它通过引入一系列技术创新有效提升了 Web 应用程序的性能和用户体验。对于 Web 开发者而言,了解并采用这些新技术至关重要,这不仅有助于构建更高效的 Web 应用...

    nginx-1.10.2:nginx-1.10.2源码-自己初读过的版本,其中包含了一点英文注释

    在Nginx 1.10.2中,HTTP/2协议得到了全面支持,带来了更快的数据传输速度和更少的网络往返次数,提高了用户体验。HTTP/2的特性包括二进制分帧、多路复用、头部压缩等。 **6. 负载均衡** Nginx内置了强大的负载均衡...

    微信小程序开发初体验项目-用于BJTU周末shuttle bus预定

    本项目“微信小程序开发初体验项目-用于BJTU周末shuttle bus预定”是针对北京交通大学(BJTU)的周末校车预订系统,旨在方便学生和教职工预约校车服务。该项目的前端部分是`wxtour`,由微信开发者工具进行开发并上传...

    NetCore1.1+Linux部署初体验

    在本文中,我们将探讨如何在Linux系统(以CentOS 7为例)上部署.NET Core 1.1应用程序,这是针对开发者的一次初体验。首先,确保你的开发环境是Win10,并且已经安装了Visual Studio 2017,特别注意在安装时要勾选...

    Linux环境下负载均衡设置

    Nginx从设计之初就重视性能优化。它使用了多种技术来减少系统资源的消耗,比如采用分阶段资源分配技术,有效降低了CPU和内存的占用。它还能抵御类似DOS的攻击,并保证服务的持续稳定运行。 Nginx的高可用性和稳定性...

    最新大数据项目实战实时数仓13G

    │ │ 010-采集模块(日志采集 Web项目初体验).avi │ │ 012-采集模块(日志采集 将数据落盘&写入Kafka 测试).avi │ │ 015-采集模块(日志采集 Nginx 配置负载均衡的反向代理).avi │ │ 017-...

    如何限制电脑PC端访问Web页面只能手机端才能访问

    - **多平台支持**:在设计之初就应考虑到多平台兼容,确保手机用户和PC用户都能获得良好的体验。 6. **技术选型**: - 如果使用的是前后端分离架构,可以在前端框架(如React、Vue等)中实现设备检测,或者在后端...

    laradock

    LaraDock致力于使开发体验更轻松。 它包含预打包的Docker映像,可为您提供一个绝佳的开发环境,而无需您在本地计算机上安装PHP,NGINX,MySQL,REDIS和任何其他软件。 用法概述:运行NGINX , MySQL和Redis 。 ...

    B2C电子商务平台分析与设计报告.doc

    这种模式在21世纪初逐渐兴起,通过互联网技术打破了传统零售业的空间限制,使得商家能够触及更广泛的消费者群体,同时消费者也能享受到更便捷的购物体验。本项目旨在分析和设计一个高效、安全且用户友好的B2C电子...

    Android平台下高校考试通系统设计研究.pdf

    这需要系统设计者在应用设计之初就充分考虑不同学习领域和考试科目的特殊性,以及用户界面和用户体验的不同需求。 文档中还提到了一些实现细节,例如在Android平台下使用XMPP协议进行即时消息通信,以及如何利用...

    iwebshop5.1临时试用版本

    《iWebShop 5.1:开源电子商城系统的探索与实践》 iWebShop 5.1是一款专为电子商务设计的开源...无论你是初入电商领域的小型商家,还是寻求转型的传统企业,都可以考虑利用iWebShop 5.1来搭建属于自己的移动网上商城。

    天天生鲜项目日志1

    【天天生鲜项目日志1】记录了该项目在2020年初进行的技术选型和实施过程中的一些关键点,主要涉及到了Python的Django框架、MySQL和Redis数据库、Celery任务队列、FastDFS分布式文件系统以及Nginx的使用。以下是这些...

    TPshop免费开源商城系统 已优化

    【TPshop免费开源商城系统详解】 ...该系统以其强大的功能、灵活的扩展性以及友好的用户体验获得了众多用户的青睐。...无论是初涉电商的新手还是有一定经验的开发者,都能从中受益,构建出符合自身需求的在线商店。

    基于PHP的dz方客模板 php版 v1.0.zip

    此外,由于是PHP版,用户需要确保服务器环境支持PHP运行,例如LAMP(Linux + Apache + MySQL + PHP)或LNMP(Linux + Nginx + MySQL + PHP)。 总的来说,"基于PHP的dz方客模板 php版 v1.0.zip" 是一款专为Discuz! ...

    系统稳定性

    - **少出问题**:设计之初就考虑到可能出现的问题,并采取相应的预防措施。 - **快速解决**:对于已发生的问题,能够迅速定位并解决。 - **明确系统健康状况趋势**:能够实时监控系统的各项指标,预测可能出现的问题...

    Linux 那些破事儿之我的高性能

    进入第三个十年,繁华落尽见真醇,我进入了‘醇光初现’的阶段,真正体味到了境界之美。”这句话不仅反映了个人成长的过程,也暗示了技术领域内,尤其是在Linux系统性能调优方面,随着时间的推移和技术的成熟,我们...

    FFmpeg4.3系列之21:OpenCV4小白入门与实战58例

    一、小白入门与初体验:禁果尝鲜 二、图像基本操作:懵懵懂懂学图像 三、图像统计操作:七七八八有收获 四、图像卷积:不入虎穴焉得虎子 五、磨皮美颜:柳暗花明又一村 六、二值图像:阴阳合一法自然 七、图像形态学...

Global site tag (gtag.js) - Google Analytics