部署Nginx服务器

简介:

     部署Nginx服务器


常见的web服务器:

unix和linux平台下:

--Apache、Nginx、Lighttpd、

--Tomcat、IBM WebSphere

windows平台下:

--微软公司的IIS(Internet Information Server)


Nginx简介:

--Nginx是俄罗斯人编写的十分轻量级的HTTP服务器

--是一个高性能的HTTP和反向代理服务器,同时也是一个IMAP/POP3/SMTP代理服务器。



一、Nginx安装与配置

1.nginx的安装


 因为Nginx的安装有依赖,为了方便建议先把开发工具和开发库安装。因为nginx支持地址重写,修改用户的访问的目标地址(perl+正则表达式),所以依赖pcre;要支持https安装openssl;


因为nginx的进程所有者是nginx,在安装nginx之前先创建nginx用户。


#useradd -M -s /sbin/nologin nginx

安装依赖包,yum源已经配置好:


#yum -y install pcre-devel pcre

#yum -y install openssl



Nginx 用源码包安装,源码包安装四步走:解压、配置、编译、安装。

解压之后进入到目录下


#tar -zxvf nginx-0.8.55.tar.gz

#cd  nginx-0.8.55.tar.gz

#./configure  \

> --prefix=/usr/local/nginx   \

> --user=nginx  \

> --group=nginx \

> --with-http_stub_status_module \

> --with-http_ssl_module


#make    &&    make    install

#cd   /usr/local/nginx/

#ls

conf   配置文件    nginx.conf  主配置文件  

html  网页目录

logs   日志文件存放目录

sbin   启动服务的脚本文件存放目录


2启动nginx服务(默认监听80端口)


#service  httpd  stop    httpd服务监听的也是80端口,两者不能同时开启

#chkconfig  --level  35  httpd  off



#cd /usr/local/nginx/sbin/

#./nginx  [选项]

-h                             查看帮助信息

-v查看nginx版本

-V查看编译参数

-t测试默认配置文件

-c 指定配置文件


#./nginx             利用脚本启动服务,默认的配置文件在conf/nginx.conf



#netstat  -utnlap | grep :80//查看状态


监听端口   80

进程名       nginx

传输协议    tcp

进程所有者   nginx



3.停止服务用杀进程的方式:


pkill   -信号     进程名

kill     -信号     pid号


信号:

TERM或INT 快速关闭

QUIT  从容关闭,关闭主进程顺便关闭工作子进程

HUP           重载配置用新的配置开始新的工作进程从容关闭旧的工作进程

USR1  重新打开日志文件

USR2  平滑升级可执行程序

WINCH  从容关闭工作进程,不会立即关闭子进程


例:

  pkill  -HUP  nginx

  pkill  -9  nginx


4访问nginx


在浏览器中输入web服务器的网址,跟httpd服务的访问是同样的


二、平滑升级nginx服务软件版本


平滑升级:在不停止服务的情况下升级软件版本


#tar  -zxvf  nginx-1.0.9...tar.gz


#cd 解压目录


#./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module


注:这里的配置选项要和低版本的配置选项相同,至于怎么查看低版本的配置选项用,用前面讲过的-V,在忘记选项的情况下可以用/.nginx -h 查看帮助


#make //编译


#mv  /usr/local/nginx/sbin/nginx   /usr/local/nginx/sbin/nginxold

#cp objs/nginx    /usr/local/nginx/sbin/

#make  upgrade

//注意这里是在高版本的目录下执行的

************************************************************************

注:编译完高版本的nginx之后,会生成一个新的目录objs。把低版本目录中的nginx启动脚本改名,或者移除,把objs下的新的nginx脚本拷贝到原来的启动目录,也就是以新换旧

************************************************************************

#./nginx -v  //查看一下软件版本


配置完成之后检查一下新的配置文件是否正确


#/usr/local/nginx/sbin/nginx -t

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok

nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful


配置正确之后平滑升级:


#kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`

sleep 1

#test -f /usr/local/nginx/logs/nginx.pid.oldbin

#kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`


也可以用netstat查看一下当前运行的nginx服务的进程号,用kill -USR2 进程号平滑升级,升级期间服务不需要停止;



二、Nginx虚拟主机


有三种方式:


基于ip地址虚拟主机(通过ip地址区分用户访问)  listen   ip:端口号


基于端口虚拟主机(通过端口区分用户访问)  listen  端口号


基于域名虚拟主机(通过主机名区分用户访问) server_name xxx.xxx.xxx


vim  安装目录/conf/nginx.conf


配置容器:(虚拟主机的配置是在这个容器中加以配置的)

http  {

     server  {


           location   /  {



            }


     }

}


配置文件的有效配置行如下:

[root@localhost conf]# grep -v -E '#|^$' nginx.conf

worker_processes  1;

events {

   worker_connections  1024;

}

http {

   include       mime.types;

   default_type  application/octet-stream;

   sendfile        on;

   keepalive_timeout  65;

   server {

          listen       80;               //默认监听80端口

          server_name  localhost;

          location / {

           root   html;

           index  index.html   index.htm;

           }

          error_page   500 502 503 504  /50x.html;

           location = /50x.html {

           root   html;

            }

   }

}


配置基于端口的虚拟主机:

http://192.168.1.100:8000    ---->  web8000

http://192.168.1.100:8090    ---->  web8090


mkdir  /web8000//创建网站根目录

mkdir  /web8090


echo  web8000 > /web8000/index.html    //创建测试主页

echo   web8090 > /web8090/index.html


#vim  nginx-1.conf//编辑新建的配置文件


http {


   server  {

    listen  8000;

        location / {

              root /web8000;

              index   index.html;

         }

   }

   server  {

         listen  8090;

         location / {

              root /web8090;

              index   index.html;

          }

   }    

}


[root@localhost sbin]# ./nginx -c /usr/local/nginx/conf/nginx1.conf

//启动时用-c指定启动时的配置文件

[root@localhost sbin]# netstat -untlap | grep nginx

tcp        0      0 0.0.0.0:8000                0.0.0.0:*                   LISTEN      25423/nginx        

tcp        0      0 0.0.0.0:8080                0.0.0.0:*                   LISTEN      25423/nginx        

tcp        0      0 0.0.0.0:8090                0.0.0.0:*                   LISTEN      25423/nginx


ot@localhost sbin]# elinks  --dump http://192.168.1.100:8000

  web8000

[root@localhost sbin]# elinks  --dump http://192.168.1.100:8090

  web8090

[root@localhost sbin]# elinks  --dump http://192.168.1.100:8080

                              Welcome to nginx!

[root@localhost sbin]#


基于ip地址虚拟主机(通过ip地址区分用户访问)

*生产环境中要有对应ip地址的物理网卡。


http://192.168.1.100      -------->    web100

http://192.168.1.200      -------->    web200


vim  nginx1.conf


http  {

server  {

    listen  192.168.1.100:80;

        location / {

              root /web8000;

              index   index.html;

         }

   }

   server  {

         listen  192.168.1.200:80;

         location / {

              root /web8090;

              index   index.html;

          }

   }

}


基于域名的虚拟主机(通过主机名区分用户的访问)

http://www.tarena.com   ---------->   www

http://bbs.tarena.com     ---------->   bbs


http {

server  {

    listen  80;

    server_name  www.tarena.com;

        location / {

              root /web8000;

              index   index.html;

         }

   }

   server  {

         listen  80;

         server_name bbs.tarena.com;

         location / {

              root /web8090;

              index   index.html;

          }

   }


}



三、nginx用户认证+访问控制


location /{


root html;

index index.html;

allow 192.168.8.1;//只允许192.168.8.1访问

deny all;

auth_basic "auth-domain";

//基本摘要类型,引号中为提示信息,可自由发挥

auth_basic_user_file /usr/local/nginx/conf/authuser.txt;

//指定



}

当配置为: deny 192.168.8.1;


  allow all;//只拒绝192.168.8.1访问




四、配置反向代理



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


upstream sergrp{//定义源服务器组,名字可自由发挥

server 192.168.1.10:80;

server 192.168.1.20:80;



}

       http{

server {

listen 80;

server_name www.tarena.com;

location / {

... ...

proxy_pass http://sergrp;//调用前面定义的服}务组

  }

}



 upstream 定义后台web服务器,用名称区分多个upstream,访问的时候平均分配访问流量


生产环境中web服务器装的是相同的网页,这样用户访问的时候实现负载均衡



 这里的192.168.1.10与192.168.1.20上分别部署web服务器,可以用apache也可以用nginx无所谓,这里的nginx只是配置了一个代理服务器



五、nginx负载均衡


nginx目前支持四种分配方式:


--轮询(默认的):权重为1;每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉能自动剔除


--Weight 指定轮询几率,权重和访问比率成正比,通常用于后端服务器性能不同的情况,默认值为1


--ip_hash 每个请求按访问ip的hash结果分配,这样可以让每个访客固定访问一个后端服务器,可以解决session的问题


--Fair 按后端服务器的相应时间来分配请求 ,响应时间短的优先分配;但不是默认支持的,需要安装第三方软件(哪个服务器的响应时间快把请求发给哪个服务器)

  下载ip_fair包并装包



--设置服务器组主机状态


状态类型:


--down :表示当前sever暂时不参与负载

--max_fails:允许请求失败的次数(默认是1),当超过此次数时,返回              proxy_next_upstream模块定义的错误

--fail_timeout :max_fails次失败后,暂停提供服务的时间


--backup:当其他所有的非backup机器down或者忙的时候,请求会发给backup机器,所以这台机器压力会最轻



注:max_fails与fail_timeout组合用timeout的单位是秒;



upstream sergrp{


#ip_hash;

#server 192.168.8.5:80 weight=2;

server 192.168.8.5:80 down;

server 192.168.8.4:80;

server 192.168.8.6:80 backup;

server 192.168.8.3:80 max_fails=2 fail_timeout=30;






}


心得:

1其实nginx的平滑升级,就相当于重新安装一个新的源码包,只不过从原来的源码包安装四步走解压--配置--编译--安装,改为解压--配置--编译--升级。


2需要注意的是,配置高版本的时候配置选项要和低版本当时的配置相同,用-V 查看原有的配置;


3再一个需要注意的是,用新的启动脚本代替原来的启动脚本;


4最后一个需要注意的是make upgrade的时候是在 高版本的目录下,不要搞混


5构建虚拟主机的部分其实跟apache(httpd)服务是相同的原理。






      本文转自Jx战壕  51CTO博客,原文链接:http://blog.51cto.com/xujpxm/1392511,如需转载请自行联系原作者









目录
打赏
0
0
0
0
348
分享
相关文章
DeepSeek服务器繁忙解决方法:使用阿里云一键部署DeepSeek个人网站!
通过阿里云一键部署DeepSeek个人网站,解决服务器繁忙问题。学生用户可领取300元代金券实现0成本部署,普通用户则可用99元/年的服务器。教程涵盖从选择套餐、设置密码到获取百炼API-KEY的全流程,助您快速搭建专属大模型主页,体验DeepSeek、Qwen-max、Llama等多款模型,无需代码,最快5分钟完成部署。支持绑定个人域名,共享亲友使用,日均成本仅约1元。
158 10
Vue项目部署:如何打包并上传至服务器进行部署?
以上就是Vue项目打包及部署的方法,希望对你有所帮助。描述中可能会有一些小疏漏,但基本流程应该没有问题。记住要根据你的实际情况调整对应的目录路径和服务器IP地址等信息。此外,实际操作时可能会遇到各种问题,解决问题的能力是每一位开发者必备的技能。祝你部署顺利!
239 17
Nginx伪流媒体服务器搭建详细说明以及案例
Nginx伪流媒体服务器搭建步骤如下:1. 安装Nginx,根据系统选择命令;2. 编辑配置文件(/etc/nginx/nginx.conf),添加mp4相关设置;3. 创建视频目录/usr/share/nginx/html/videos并上传视频;4. 重启Nginx应用更改;5. 通过浏览器访问视频,如http://your_server_ip/videos/example.mp4。注意启用mp4模块,确保视频格式支持伪流媒体播放。
Docker——阿里云服务器使用Docker部署python项目全程小记
本文记录了我在阿里云服务器上使用Docker部署python项目(flask为例)的全过程,在这里记录和分享一下,希望可以给大家提供一些参考。
189 1
【已解决】Matomo本地SMTP配置可以发邮件,但部署到阿里云ECS就发不了邮件
在阿里云ECS上使用Matomo和PHPMailer发送邮件时遇到问题,邮件无法发出且接口调用Pending。经过排查,发现是ECS安全组未开放25/465端口,导致SMTP请求无法正常通信。解决方法为在安全组中配置并开放25/465端口,从而恢复邮件发送功能。
Linux服务器部署docker windows
在当今软件开发中,Docker成为流行的虚拟化技术,支持在Linux服务器上运行Windows容器。流程包括:1) 安装Docker;2) 配置支持Windows容器;3) 获取Windows镜像;4) 运行Windows容器;5) 验证容器状态。通过这些步骤,你可以在Linux环境中顺利部署和管理Windows应用,提高开发和运维效率。
197 1
基于ECS部署DeepSeek个人专属AI网站
本方案介绍了如何基于云服务器ECS集成百炼API和Open WebUI服务,一键部署体验DeepSeek个人专属AI网站。用户不仅可以以极低的成本,拥有个人专属的AI网站,进行稳定的AI对话,还能够切换DeepSeek-V3、DeepSeek-R1、Qwen-max等模型进行体验。同时Open WebUI还具备开源能力,支持定制工具的开发。您还可以创建其他子账号,将您的专属AI网站分享给他人使用。
使用域名访问部署在ECS上的网站
本文为您介绍如何为网站配置域名并为域名配置HTTPS证书。
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等