nginx安装

 什么是nginx?

        Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少;并发能力强;高性能;可扩展性好,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

反向代理:

       反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

正向代理:

       是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。

正向代理和反向代理区别?

       正向代理,是在客户端的。比如需要访问某些国外网站,我们可能需要购买vpn。并且vpn是在我们的用户浏览器端设置的(并不是在远端的服务器设置)。浏览器先访问vpn地址,vpn地址转发请求,并最后将请求结果原路返回来。

 

 

 

       反向代理是作用在服务器端的,是一个虚拟ip(VIP)。对于用户的一个请求,会转发到多个后端处理器中的一台来处理该具体请求。

Nginx下载

官方网址: 

 


 

安装与配置nginx服务

一、安装依赖包

yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel

 

二、下载并解压安装包

新建文件夹: cd /usr/local

 mkdir nginx

 cd nginx

下载tar包: wget http://nginx.org/download/nginx-1.13.7.tar.gz

 tar -xvf nginx-1.13.7.tar.gz

 

三、安装nginx、启动nginx服务

进入nginx目录: cd /usr/local/nginx

进入目录: cd nginx-1.13.7

执行命令 考虑到后续安装ssl证书 添加两个板块: ./configure --with-http_stub_status_module --with-http_ssl_module

执行make命令: make

执行make install命令: make install

启动nginx服务: /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

 

四、配置nginx.conf

打开配置文件: vim /usr/local/nginx/conf/nginx.conf

 

将端口号改成80、89(随便挑个端口),选择修改nginx端口,localhost修改为你服务器的公网ip地址

 

                                                                                                                                                                                                                                                                                                                                                                                                              

五、关闭防火墙、重启nginx、查看

开放80端口:

firewall-cmd --zone=public --add-port=80/tcp --permanent

查询端口号80 是否开启:

firewall-cmd --query-port=80/tcp

重启防火墙:

firewall-cmd --reload
重启nginx:

/usr/local/nginx/sbin/nginx -s reload

查看nginx进程是否启动:

ps -ef | grep nginx

 查看nginx:

http://192.168.10.10:89

 

本文转载于网络 如有侵权请联系删除

相关文章

  • 2021-03-10:一个数组上共有 N 个点,序号为0的点是起点位置...

    2021-03-10:一个数组上共有N个点,序号为0的点是起点位置,序号为N-1的点是终点位置。现在需要依次的从0号点走到N-1号点。但是除了0号点和N-1号点,他可以在其余的N-2个位置中选出一个点,并直接将这个点忽略掉,问从起点到终点至少走多少距离?福哥答案2021-03-10:数组1,4,-1,3,忽略序号1,数组变成1,-1,3,距离是abs(-2)+4=6;忽略序号2,数组变成1,4,3,距离是3+1=4。N-2个坐标中选出一个点,并直接将这个点忽略掉。直接忽略一个点只会直接影响到,这个节点前后节点的距离。这个影响的距离我们暂且命名为优化距离,将所有节点按顺序组成三个节点的集合,通过这种方式只需要通过一次循环便能得到结果。在这里插入图片描述代码用golang编写,代码如下:packagemain import"fmt" funcmain(){ arr:=[]int{1,4,-1,3} fmt.Println(shortDistance(arr)) } funcshortDistance(arr[]int)int{ arrLen:=len(arr) if

  • 一文搞懂 Redis 的三种集群方案

    公众号关注「奇妙的Linux世界」 设为「星标」,每天带你玩转Linux!在开发测试环境中,我们一般搭建Redis的单实例来应对开发测试需求,但是在生产环境,如果对可用性、可靠性要求较高,则需要引入Redis的集群方案。虽然现在各大云平台有提供缓存服务可以直接使用,但了解一下其背后的实现与原理总还是有些必要(比如面试),本文就一起来学习一下Redis的几种集群方案。Redis支持三种集群方案主从复制模式Sentinel(哨兵)模式Cluster模式主从复制模式1.基本原理主从复制模式中包含一个主数据库实例(master)与一个或多个从数据库实例(slave),如下图 客户端可对主数据库进行读写操作,对从数据库进行读操作,主数据库写入的数据会实时自动同步给从数据库。具体工作机制为:slave启动后,向master发送SYNC命令,master接收到SYNC命令后通过bgsave保存快照(即上文所介绍的RDB持久化),并使用缓冲区记录保存快照这段时间内执行的写命令master将保存的快照文件发送给slave,并继续记录执行的写命令slave接收到快照文件后,加载快照文件,载入数据mast

  • android浮层图片拖动并且可点击效果

    最近产品出了个新需求,页面上出现浮层并且可点击,代码实现如下:Activity中实现浮层图片:@Override publicvoidonResume(){ super.onResume(); createView(); } @Override publicvoidonPause(){ super.onPause(); /在程序退出(Activity销毁)时销毁悬浮窗口 if(floatView!=null&&windowManager!=null){windowManager.removeView(floatView);floatView=null;windowManager=null;windowManagerParams=null;}} privatevoidcreateView(){ if(floatView!=null)return; CmsAPIcmsAPI=RestAdapterUtils.getRestAPI(Config.NEW_CMS_URL,CmsAPI.class,this); cmsAPI.getFloatingAd(newCallback&l

  • 使用 GitLab CI 和 Docker 自动部署 Spring Boot 应用

    Docker和SpringBoot是非常流行的组合,我们将利用GitLabCI的优势,并在应用程序服务器上自动构建,推送和运行Docker镜像。GitLabCIGitlabCI/CD服务是GitLab的一部分,每当开发人员将代码推送到GitLab存储库时,它都会在所需的环境中构建,测试和存储最新的更改。选择GitLabCI的一些主要原因:1.易于学习,使用和可扩展2.维护容易3.整合容易4.CI完全属于GitLab存储库的一部分5.良好的Docker集成6.镜像托管(Containerregistry)-基本上是你自己的私有DockerHub7.从成本上来说,GitLabCI是一个很好的解决方案。每个月你有2000分钟的免费构建时间,对于某些项目来说,这是绰绰有余的我把Docker的教程和文章整理成了PDF,关注微信关注号Java后端,回复666就能下载了。为什么GitLabCI超越Jenkins这无疑是一个广泛讨论的话题,但是在本文中,我们将不深入探讨该话题。GitLabCI和Jenkins都有优点和缺点,它们都是功能非常强大的工具。那为什么选择GitLab?如前所述,CI完全是Gi

  • 关于 ThreadLocal 你需要知道的几点

    一、ThreadLocal是什么?一个类对象类型,提供属线程本地变量,也就是同一个变量对不同线程保存了不同的值,但是和线程自身定义的自属变量不同。 通常以私有静态类型定义,用以保存特定线程特定状态属性。 线程存活期间保持对ThreadLocal的弱引用,线程结束后,则变量会被垃圾回收器回收。 二、ThreadLocal使用//定义一个ThreadLocal变量用以存储不同线程的ID ThreadLocal<Long>localVs=newThreadLocal<>(); //线程list List<Thread>threads=newArrayList<>(); //初始化线程 IntStream.range(0,5).forEach(value->{ Threadtmp=newThread(()->{ //线程运行时(线程运行期间),将ID放入变量 localVs.set(Thread.currentThread().getId()); //输出当前线程名称,ID System.out.println(Thread.curr

  • 对于hashmap的一点理解

    对于JDK1.8之后的hashMap,底层采用数组+链表、红黑树的实现方式。我们都知道对于给定的key先计算其hashcode然后hashcode再对数组的长度取余从而得到其所在的数组下标,当出现hash冲突时从,采用的链地址法将相同位置的Entry串到一条链表上,但是随着链表长度的增大,会极大的降低查找速率,因此当链表长度大于8时会由链表转为红黑树。(使用红黑树而不直接使用经典的AVL树的原因是红黑树与AVL树查询效率相当,但是红黑树牺牲一部分的平衡性从而提高了插入删除的效率,总体效率得到提升)。1.7中的的hash算法很容易构造出hash值相等的key,产生长链表,使用如此大量的key可以对服务器进行大量请求,并进一步进行dos攻击。1.7中的扩容会带来死循环问题。巧用位运算给定一个key其所在的数组下标的计算:index=hashcode&(n-1)复制上述式子中n指的是当前数组的长度,其值必须为2的整数次幂。hashcode对长度取余的操作是通过hashcode与n-1的与运算实现的,例如n=16hashcode=20,取余等于4n=10000 n-1=01111 ha

  • js函数解读

    看源码了。。XGridDataCellRenderer.prototype.render=function(xgrid,xcell,dom,value,isselected,row,col,dataId){ vartd=dom; //if(xcell.valign=="top"||td.style.verticalAlign=="top"||xcell.valign=="bottom"||td.style.verticalAlign=="bottom"){ //td.style.lineHeight="normal"; //} //if(!xcell.isHeaderCell&&isChrome){//ieff不支持td上的position:relative //dom.style.position="relative"; //} varcontainer=dom; varcontent=value; this._doc=xgrid._doc||doc

  • SpringBoot这只怪物到底是如何跑起来的?

    来源:码洞(ID:codehole)不得不说SpringBoot太复杂了,我本来只想研究一下SpringBoot最简单的HelloWorld程序是如何从main方法一步一步跑起来的,但是这却是一个相当深的坑。你可以试着沿着调用栈代码一层一层的深入进去,如果你不打断点,你根本不知道接下来程序会往哪里流动。这个不同于我研究过去的Go语言、Python语言框架,它们通常都非常直接了当,设计上清晰易懂,代码写起来简单,里面的实现同样也很简单。但是SpringBoot不是,它的外表轻巧简单,但是它的里面就像一只巨大的怪兽,这只怪兽有千百只脚把自己缠绕在一起,把爱研究源码的读者绕的晕头转向。但是这Java编程的世界SpringBoot就是老大哥,你却不得不服。即使你的心中有千万头草泥马在奔跑,但是它就是天下第一。如果你是一个学院派的程序员,看到这种现象你会怀疑人生,你不得不接受一个规则——受市场最欢迎的未必就是设计的最好的,里面夹杂着太多其它的非理性因素。 经过了一番痛苦的折磨,我还是把SpringBoot的运行原理摸清楚了,这里分享给大家。一、HelloWorld首先我们看看SpringBoot

  • 25:最长最短单词

    25:最长最短单词总时间限制: 1000ms内存限制: 65536kB描述输入1行句子(不多于200个单词,每个单词长度不超过100),只包含字母、空格和逗号。单词由至少一个连续的字母构成,空格和逗号都是单词间的间隔。试输出第1个最长的单词和第1个最短单词。  输入一行句子。输出两行输出: 第1行,第一个最长的单词。 第2行,第一个最短的单词。样例输入IamstudyingProgramminglanguageCinPekingUniversity复制 样例输出Programming I复制 提示如果所有单词长度相同,那么第一个单词既是最长单词也是最短单词。来源习题(12-2)1#include<iostream> 2#include<cstdio> 3#include<cstring> 4#include<cmath> 5usingnamespacestd; 6intmax_=-1; 7intmax_begin; 8intmax_end; 9intmin_=10000; 10intmin_begin; 11intmin_end; 12c

  • 谈钱“上”感情——漫谈微信红包的破窗效应

    陆诗雨 腾讯研究院研究员 唐文杰 腾讯研究院助理研究员  收红包、送红包,是中国人长久以来的传统习俗。小小的红色纸袋里塞下最实惠、最接地气的铜板,是可以追溯到明清时期就有的风俗。或许古人的温馨与含蓄,让他们觉得似乎把钱币直接塞到他人手中是一件有些唐突,或至少是不够文雅的事情,于是喜庆的、充满吉祥寓意的红包就成为了人见人爱的物品。从古至今,红包文化在中国社会中一直扮演着礼尚往来和维系人际关系的重要角色,从本质意义上,我们更多得看到的是婚假喜庆的祝愿、感戴之情的酬谢、祈愿儿孙的真情,体现了中国人注重礼尚往来、受惠不忘施予人的儒家教养。  但是随着物质生活的不断提升,红包本身的意味似乎也渐渐发生了改变。红包本身是吉祥的祝愿,但是发展至今却成为了一种攀比,过年给孩子压岁钱要比,朋友新婚随礼要比,似乎不装个三五百都不好送出手,网上盛传的段子说一个月的工资还不够包红包恐怕也不全是虚言。更有甚者,为了避免给红包,只好借故避开至爱亲朋的喜事,我们发现传统的红包有时也变成了一种负累,甚至在某种意义上让人与人之间的关系变得紧张。  █“设上限、抢随机”纾解人情压力  在这样的背景下,微信红包应运而生。从某

  • 第k短路径_利用标幺值进行短路计算

    给定一张N个点(编号1,2…N),M条边的有向图,求从起点S到终点T的第K短路的长度,路径允许重复经过点或边。注意:每条最短路中至少要包含一条边。输入格式 第一行包含两个整数N和M。接下来M行,每行包含三个整数A,B和L,表示点A与点B之间存在有向边,且边长为L。最后一行包含三个整数S,T和K,分别表示起点S,终点T和第K短路。输出格式 输出占一行,包含一个整数,表示第K短路的长度,如果第K短路不存在,则输出−1。数据范围 1≤S,T≤N≤1000, 0≤M≤105, 1≤K≤1000, 1≤L≤100 输入样例: 22 125 214 122 输出样例: 14复制题解 A*算法,第二次弹出来的值位第二小的值.#include<bits/stdc++.h> usingnamespacestd; typedefpair<int,int>PII; typedefpair<int,pair<int,int>>PIII; constintN=1e3+10; constintM=1e5+10; #definexfirst #defineysecon

  • Hadoop学习笔记—Yarn

    目录一些基本知识ResourceManager的恢复ResourceManager的HAYARNNodeLabelsYARNNodeAttributesWebApplicationProxyYARNTimelineServer基于yarn的API,编写一个可以部署到yarn集群执行的应用应用安全NodeManagerHealthCheckerServiceCGroupswithYARNSecureContainers移除节点OpportunisticContainers机会主义容器配置部署基本部署方式高效能部署一些错误错误1错误3参考资料 上一份工作主要负责大数据平台的建设,在这个过程中积累了一些Hadoop生态组件的搭建和使用笔记,由于时间关系,不打算去修改其中的错别字和排版问题,直接释出原始笔记。 一些基本知识 ResourceManager的恢复 当ResourceManager挂掉重启后,为了使之前的任务能够继续执行,而不是重新执行。势必需要yarn记录应用运行过程的状态。 运行状态可以存储在 ZooKeeper FileSystem比如hdfs LevelDB 使用z

  • python装饰器详解

    python装饰器详解 目录python装饰器详解1、闭包2、装饰器3、带参数的装饰器4、类装饰器 1、闭包 要想了解装饰器,首先要了解一个概念,闭包。什么是闭包,一句话说就是,在函数中再嵌套一个函数,并且引用外部函数的变量,这就是一个闭包了。光说没有概念,直接上一个例子。 defouter(x): definner(y): returnx+y returninner print(outer(6)(5)) ----------------------------- >>>11 复制 如代码所示,在outer函数内,又定义了一个inner函数,并且inner函数又引用了外部函数outer的变量x,这就是一个闭包了。在输出时,outer(6)(5),第一个括号传进去的值返回inner函数,其实就是返回6+y,所以再传第二个参数进去,就可以得到返回值,6+5。 2、装饰器 接下来就讲装饰器,其实装饰器就是一个闭包,装饰器是闭包的一种应用。什么是装饰器呢,简言之,python装饰器就是用于拓展原来函数功能的一种函数,这个函数的特殊之处在于它的返回值也是一个函数,使用pyth

  • CentOS7开启docker远程访问并在idea中连接使用

    CentOS7开启docker远程访问并在idea中连接使用 1、编辑/usr/lib/systemd/system/docker.service,配置远程访问。主要是在[Service]这个部分,添加下列参数: vim/usr/lib/systemd/system/docker.service 复制 2、添加下列这句话: -Htcp://0.0.0.0:2375-Hunix:///var/run/docker.sock\ [Service] ExecStart= ExecStart=/usr/bin/dockerd-Htcp://0.0.0.0:2375-Hunix:///var/run/docker.sock 复制 3、重启 systemctldaemon-reload systemctlrestartdock复制 宋兴柱(Sindrol):转载内容,请标明出处,谢谢!源文来自宝贝云知识分享:https://www.dearcloud.cn

  • php session 设置无效

    假如开启了session_start();那跨页访问的时候,session还是没取到,不如看看是不是路径对不对,还有cookie也是如此! session下可以通过session_save_path('/');//设置session保存的路径 保持所有的session和cookie的值都是在一个path里面的,免得到时候又取不到。

  • MySQL优化--INSERT ON DUPLICATE UPDATE死锁

    INSERTONDUPLICATEUPDATE与死锁 在MySQL中提供两种插入更新的方式:REPLACEINTO和INSERTONDUPLICATEUPDATE,简化了“存在则更新,不存在则插入”的实现逻辑,但这两种方式在MySQL内部都被拆分为多个操作步骤且引入GAP锁来保证数据完整性,因此在高并发情况下极易产生死锁。##==================================================##在MySQL中INSERTONDUPLICATEUPDATE的加锁流程:1. Innodb存储引擎尝试INSERINTO操作2. 如果插入成功,则忽略DUPLICATEUPDATE部分并返回3. 如果插入失败,则表明有相同记录存在,对该记录加共享锁(S)4. 执行DUPLICATEUPDATE语句,对记录加X锁,然后更新记录。 ##==================================================##对于INSERTONDUPLICATEUPDATE操作,当两个会话S1和S2使用INSERTONDUPLICATEUPDATE语句

  • UVa 541 Error Correction

      ErrorCorrection  Abooleanmatrixhasthe parityproperty wheneachrowandeachcolumnhasanevensum,i.e.containsanevennumberofbitswhichareset.Here'sa4x4matrixwhichhastheparityproperty:   1010 0000 1111 0101 复制 Thesumsoftherowsare2,0,4and2.Thesumsofthecolumnsare2,2,2and2.   Yourjobistowriteaprogramthatreadsinamatrixandchecksifithastheparityproperty.Ifnot,yourprogramshouldcheckiftheparitypropertycanbeestablishedbychangingonlyonebit.Ifthisisnotpossibleeither,thema

  • Windows平台网站图片服务器架构的演进

    在主流的Web站点中,图片往往是不可或缺的页面元素,尤其在大型网站中,几乎都将面临“海量图片资源”的存储、访问等相关技术问题。在针对图片服务器的架构扩展中,也会历经很多曲折甚至是血泪教训(尤其是早期规划不足,造成后期架构上很难兼容和扩展)。 本文将以一个真实垂直门户网站的发展历程,向大家娓娓道来。 构建在Windows平台之上的网站,往往会被业内众多技术认为很“保守”,甚至会有点。很大部分原因,是由于微软技术体系的封闭和部分技术人员的短视造成的(当然,主要还是人的问题)。由于长期缺乏开源支持,所以很多人只能“闭门造车”,这样很容易形成思维局限性和短板。以图片服务器为例子,如果前期没有容量规划和可扩展的设计,那么随着图片文件的不断增多和访问量的上升,由于在性能、容错/容灾、扩展性等方面的设计不足,后续将会给开发、运维工作带来很多问题,严重时甚至会影响到网站业务正常运作和互联网公司的发展(这绝不是在危言耸听)。 很多公司之所以选择Windows(.NET)平台来构建网站和图片服务器,很大部分由创始团队的技术背景决定的,早期的技术人员可能更熟悉.NET,或者团队的负责人认为Windows/.

  • openCV模块应用之解析传输的图片

    通过: img=cv2.imdecode(np.fromstring(str_image,np.uint8),1)复制 可以将字节流图片生成图像Mat,供cv2应用

  • 索引失效的情况?

    原文链接:平时工作中有没有遇到索引失效的情况? 全值匹配,对索引中所有列都指定具体值。该情况下,索引生效,执行效率高。2.左前缀法则如果索引了多列,要遵守左前缀法则。指的是查询从索引的左前列开始,并且不跳过索引中的列,否则索引失效. 匹配左前缀法则,走索引。结果也只是显示最后的匹配情况。 如果符合左法则,但是出现跳跃某一列,只有左列索引生效。 范围查询右边的列,不能使用索引,否则破坏后面字段的索引。 不要在索引列上进行运算操作,索引将失效。 字符串不加单引号,造成索引失效。【在查询是,没有对字符串加单引号,MySQL的查询优化器,会自动的进行类型转换,造成索引失效】 尽量使用覆盖索引,避免select*尽量使用覆盖索引(只访问索引的查询(索引列完全包含查询列)如:selectidfromuser,id是user的某个索引),减少select*。 用or分割开的条件,如果or前的条件中的列有索引,而后面的列中没有索引,那么涉及的索引都不会被用到。但是and不会受影响示例,name字段是索引列,而createtime不是索引列,中间是or进行连接是不走索

  • python基础008----Python中类/函数/模块的简单介绍

    关于Python中类和函数及方法的调用,我们写在这个demo.py文件,具体代码如下: classClassA(object): string1="这是一个字符串。" definstancefunc(self): print('这是一个实例方法。') print(self) @classmethod defclassfunc(cls): print('这是一个类方法。') print(cls) @staticmethod defstaticfun(): print('这是一个静态方法。') test=ClassA()#初始化一个ClasssA的对象,test是类ClassA的实例对象 test.instancefunc()#对象调用实例方法 test.staticfun()#对象调用静态方法 test.classfunc()#对象调用类方法 printtest.string1#对象调用类变量 ClassA.instancefunc(test)#类调用实例方法,需要带参数,这里的test是一个对象参数 ClassA.instancefunc(ClassA)#类调用实

相关推荐

推荐阅读