草庐IT

4. Nginx

奈奈生喜欢巴卫 2024-01-05 原文

用处

Nginx是一款高性能的http服务器,反向代理服务器,电子邮件(IMAP/POP3)代理服务器。
nginx能支持5万高并发链接,免费开源,cpu、内存等资源消耗非常低,运行稳定。
应用场景:
1、http服务器。能独立提供http服务,nginx可以作为服务器部署静态资源网站。
2、虚拟主机。一台服务器虚拟出多个网站,例如个人网站使用的虚拟机。
3、反向代理,负载均衡。nginx可以做反向代理,使用服务器集群避免单个服务器的超负载,而nginx可以把请求转发到不同的服务器,而负载均衡就是可以使多台服务器平均分担压力,不会一台服务器宕机,另一台空闲。

安装

1、安装gcc环境,nginx是c语言开发的,因此安装nginx需要安装gcc环境。
yun install gcc-c++
2、安装pcre库,nginx的http模块需要pcre来解析正则表达式,而pcre-devel是pcre开发的一个二次开发库。
yum install -y pcre pcre-devel
3、安装zlib库,zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip。
yum install -y zlib zlib-devel
4、安装openSSL,nginx不仅支持http协议,还支持https协议(在ssl协议上传输http),openSSL是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供丰富的应用程序供测试或其他目的使用。
yum install -y openssl openssl-devel
5、上传nginx的源码包tar.gz到linux(我上传到了/usr/local目录)
6、解压缩(local目录下出现一个 nginx-1.8.0目录)
tar -xvf nginx-1.8.0.tar.gz
7、 进入nginx-1.8.0目录,需要用configure命令创建一个makefile文件

./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi

执行后在nginx-1.8.0目录下多一个Makefile文件
8、nginx-1.8.0目录下,编译
make
9、nginx-1.8.0目录下,安装(local目录下出现一个nginx目录)
make install
10、因为在上面把临时文件目录指定为了/var/temp/nginx/client,而此文件不存在,因此需要创建此目录
mkdir /var/temp/nginx/client -p
11、进入nginx目录下的sbin目录
cd /usr/local/nginx/sbin
12、启动nginx
./nginx
13、访问虚拟机ip(默认端口为80)

14、nginx的关闭有两种:
方式一(非正常退出):./nginx -s stop
方式二(正常退出,保存配置再退出):./nginx -s quit
15、重新加载配置文件
./nginx -s reload

静态资源部署到nginx

认识nginx目录

进入nginx目录

查看sbin目录:

在sbin目录下用./nginx命令启动nginx,或./nginx -s reload重启。
查看html目录:

其中index.html页面对应的是默认nginx启动页面:

50x.html页面对应的是:

查看conf目录:

查看nginx.conf配置文件:

部署静态资源

index文件里面是准备好的静态资源,先将index文件夹上传到linux上
用fileZilla工具上传index文件夹到linux的/usr/local/nginx目录下

修改/usr/local/nginx/conf目录下的nginx.conf配置文件

修改完配置文件,重启nginx


访问

配置虚拟主机

就是把一台物理服务器划分出多个虚拟服务器。

端口绑定

regist文件里面是准备好的静态资源,先将regist文件夹上传到linux上。
用fileZilla工具上传regist文件夹到linux的/usr/local/nginx目录下。
修改/usr/local/nginx/conf目录下的nginx.conf配置文件,配置两个server
(除了上面配置了访问index目录的server,再配置一个server访问regist目录资源,端口号不一样)

访问:
80端口:

81端口:

域名绑定

域名是ip的对应,访问时输入ip地址+端口号,但ip不好记忆,便有了域名的出现。
baidu.com一级域名,map.baidu.com二级域名。。
dns解析过程:
一个域名对应一个ip,访问baidu.com—>去本地的host文件找有没有baidu.com对应的ip地址—>如果有,则通过80端口访问这个ip,如果没有,通过dns服务器去找域名和ip的对应关系。
总之,配置域名和 ip 的映射关系,如果 hosts 文件中配置了域名和 ip 的对应关系,不需要走dns 服务器。
1、在/etc/hosts文件中设置域名ip映射关系

2、在nginx配置文件中修改ip为域名(/usr/local/nginx/conf/nginx.conf

3、刷新配置
在/usr/local/nginx/sbin下执行 ./nginx -s reload
4、访问

nginx反向代理与负载均衡

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

在tomcat上部署一个项目

1、将一个项目打成war包部署到tomcat。
打成war包,打包后文件名为ROOT

2、把war包上传到tomcat目录的webapp目录下,/usr/local/apache-tomcat-8.5.83/webapps,webapps目录下原本里面的东西可以都删除,我把他们放在了副本文件夹里,把ROOT.war放到webapps目录下。
只所以设置打包后文件名为ROOT,因为/webapps/ROOT目录是tomcat默认目录,tomcat启动后默认加载webapps目录下的应用程序,它可以是文件夹,war包,jar包等形式。
3、启动tomcat
在/usr/local/apache-tomcat-8.5.83/bin下执行 ./startup.sh
4、访问,默认端口是8080,/usr/local/apache-tomcat-8.5.83/conf/server.xml可修改端口。

配置反向代理

1、在上面的基础上,修改nginx配置文件/usr/local/nginx/conf/nginx.conf
之前的:

修改后:

2、nginx/sbin下刷新 ./nginx -s reload
3、启动tomcat和nginx后,访问www.htmltravel.com,nginx会作为代理,将请求再转发给tomcat服务器,访问192.168.93.129:8080。

配置负载均衡

负载均衡,负载均衡的前提是实现了集群,负载均衡提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性。
负载均衡,就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。
1、把刚才的tomcat复制三份,相当于三个tomcat服务器,修改端口号。

2、在tomcat1,2,3目录/conf/server.xml中分贝修改端口号为8081,8082,8083。

3、在tomcat1,2,3目录/bin下执行./startup.sh分别启动这个三个项目

4、为了能够区分是访问哪个服务器的网站,可以在首页标题加上标记以便区分。

5、修改nginx的配置文件 /usr/local/nginx/conf/nginx.conf

6、访问www.htmltravel.com,nginx代理可能访问192.168.93.129:8081,也可能访问192.168.93.129:8082和192.168.93.129:8083,三台服务器出现的概率各为33.3333333%。
7、可以修改概率的比重,例如2:1:1

有关4. Nginx的更多相关文章

  1. ruby-on-rails - 如何优雅地重启 thin + nginx? - 2

    我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server

  2. ruby-on-rails - 如何用不同的用户运行nginx主进程 - 2

    A/ctohttp://wiki.nginx.org/CoreModule#usermaster进程曾经以root用户运行,是否可以以不同的用户运行nginxmaster进程? 最佳答案 只需以非root身份运行init脚本(即/etc/init.d/nginxstart),就可以用不同的用户运行nginxmaster进程。如果这真的是你想要做的,你将需要确保日志和pid目录(通常是/var/log/nginx&/var/run/nginx.pid)对该用户是可写的,并且您所有的listen调用都是针对大于1024的端口(因为绑定(

  3. ruby-on-rails - Websocket-rails 不适用于 Nginx 和 Unicorn 的生产环境 - 2

    我有带有gemwebsocket-rails0.7的Rails3.2应用程序。在开发机上,一切正常在生产环境中,我使用Nginx/1.6作为代理服务器,Unicorn作为http服务器。Thin用于独立模式(在https://github.com/websocket-rails/websocket-rails/wiki/Standalone-Server-Mode之后)。nginx配置:location/websocket{proxy_passhttp://localhost:3001/websocket;proxy_http_version1.1;proxy_set_headerUp

  4. ruby - 没有 nginx 的 Puma - 同一 IP 上的多个 ruby​​ 应用程序 :PORT - 2

    Nginx在生产中的重要性通常基于它为慢速客户端提供服务的能力;在RESTfulAPI的设置中,它似乎是生产堆栈的一个不必要的层,尤其是Puma(不像广泛使用的unicorn可以处理nginx工作)。Pumacanallowmultipleslowclientstoconnectwithoutrequiringaworkertobeblockedontherequesttransaction.Becauseofthis,Pumahandlesslowclientsgracefully.HerokurecommendsPumaforuseinscenarioswhereyouexpect

  5. ruby-on-rails - Foreman无法启动Nginx,但我可以手动启动。为什么? - 2

    我目前正在运行Foreman在暂存(Ubuntu)上,一旦我开始工作,就会切换到使用upstart。我的Procfile.staging看起来像这样:nginx:sudoservicenginxstartunicorn:bundleexecunicorn-c./config/unicorn.rbredis:bundleexecredis-serversidekiq:bundleexecsidekiq-v-C./config/sidekiq.yml我可以使用以下方法成功启动nginx:$sudoservicenginxstart然而,当我运行$foremanstart时,当其他三个进程成

  6. Linux操作系统CentOS7安装Nginx[详细版] - 2

    Nginx安装1.官网下载Nginx2.使用XShell和Xftp将压缩包上传到Linux虚拟机中3.解压文件nginx-1.20.2.tar.gz4.配置nginx5.启动nginx6.拓展(修改端口和常用命令)(一)修改nginx端口(二)常用命令1.官网下载Nginxhttp://nginx.org/en/download.html这里我下载的是1.20.2版本,大家按需下载对应稳定版即可2.使用XShell和Xftp将压缩包上传到Linux虚拟机中没有XShell可以参考《Linux操作系统CentOS7连接XShell》3.解压文件nginx-1.20.2.tar.gz1)检查是否存

  7. ruby-on-rails - ubuntu 14.04 上 passenger-install-nginx-module 的 Bundler 错误 - 2

    我正在ubuntu14.04和ruby2.2.4上安装passenger+nginx。passenger-install-nginx-module有bundler错误$passenger-install-nginx-module/home/ubuntu/.rvm/gems/ruby-2.2.4/gems/bundler-1.13.1/lib/bundler/rubygems_ext.rb:45:in`full_gem_path':uninitializedconstantBundler::Plugin::API::Source(NameError)from/home/ubuntu/.r

  8. nginx配置https后报错nginx: [emerg] https protocol requires SSL support in XXX.conf详细解决方法 - 2

    一、前言最近,在测试环境的nginx里增加了一个https配置:location/api-meeting-qq/{proxy_passhttps://api.meeting.qq.com/;}然后,执行命令://这个是nginx启动文件的路径,根据实际情况自行更改sudo/home/useradmin/nginx/sbin/nginx-sreload结果,nginx就报错了:nginx:[emerg]httpsprotocolrequiresSSLsupportin/home/useradmin/nginx/conf.d/trainNginx.conf:9二、解决方法百度发现,是之前安装ngi

  9. ruby-on-rails - Rails 重定向在 nginx 和 gunicorn 设置上失败 - 2

    我已经按照Railscasts第293集中的描述设置了在nginx和unicorn上运行。当我尝试重定向时,例如classPostsController"Testredirect"endend我被重定向到http://unicorn/posts而不是http://mydomain.com/posts这是我的应用程序的nginx.confupstreamunicorn{serverunix:/tmp/unicorn.scvrush.sockfail_timeout=0;}server{listen80defaultdeferred;#server_nameexample.com;root

  10. ruby-on-rails - Puma 和 Nginx 502 Bad Gateway 错误(Ubuntu 服务器 14.04) - 2

    我需要部署我的Rails应用程序,所以我从这里开始执行了所有步骤,https://www.digitalocean.com/community/tutorials/how-to-deploy-a-rails-app-with-puma-and-nginx-on-ubuntu-14-04但是在教程结束时,我得到了这个错误-->“502BadGateway”编辑现在的错误消息-->“很抱歉,出了点问题。”但是Nginx错误输出是相同的,我检查了puma错误消息,但它们只是记录它何时启动以及何时正常停止。位于app_directory/log下的Rails日志不产生任何输出。puma-man

随机推荐