Nginx网站服务(Nginx虚拟主机的搭建)

news/2024/5/20 14:21:27/文章来源:https://blog.csdn.net/weixin_44938203/article/details/122393439

Nginx网站服务以及LNMP搭建

文章目录

  • Nginx网站服务以及LNMP搭建
    • Nginx服务基础
      • 关于Nginx
      • Nginx相对于Apache的优点:
      • Apache相对于Nginx的优点:
    • Nginx访问控制
    • 安装
      • 关闭防火墙
      • 安装依赖包
      • 创建运行用户、组
      • 编译安装Nginx
      • 启动前先关掉之前装的apache服务
      • 检查、启动、重启、停止 nginx服务
    • 配置 Nginx服务管理
    • 认识Nginx服务的主配值文件nginx.conf
      • 1.全局设置
      • 2.I/o事件配置
      • 3.HTTP配置
      • 日志格式设定
    • 访问状态统计配置
      • 并发量检测脚本
    • 基于授权的访问控制
      • 1.生成用户登录码认证文件
      • 修改主配置文件相对应目录,添加认证配置项
    • 基于客户端的访问控制
      • 访问控制规则如下
    • 基于域名的Nginx虚拟主机
      • 提供域名解析
      • 为虚拟主机添加测试文件
      • 修改Nginx配置文件
    • 基于IP的Nginx虚拟主机
    • 基于端口的 Nginx 虚拟主机

Nginx服务基础

关于Nginx

一款高性能、轻量级Web服务软件

  • 稳定性高
  • 系统资源消耗低
  • 对HTTP并发连接的处理能力高
    • 单台物理服务器可支持30 000~50000个并发请求

Nginx相对于Apache的优点:

轻星级,同样是web服务,比Apache 占用更少的内存及资源﹔高并发,Nginx处理请求是异步非塞的,而Apache
则是阻塞型的,在高并发下Nginx能保持低资源低消耗高性能;高度模块化的设计

编写模块相对简单;社区活跃,各种高性能模块出品迅速。

Apache相对于Nginx的优点:

rewrite,比Nginx的rewrite强大;模块超多,基本想到的都可以找到;少bug,Nginx的bug相对较多;超稳定

存在就是理由,一般来说,需要性能的web 服务,用Nginx。如果不需要性能只求稳定,那就Apache。Nginx处理动态请求是弱项,一般动态请求要Apache去做,Nginx只适处理静态网页或反向代理。

  • Nginx是一个基于事件的Web服务器,Apache是一个基于流程的服务器;.
  • Nginx所有请求都由一个线程处理,Apache单个线程处理单个请求;
  • Nginx避免子进程的概念,Apache是基于子进程的;
  • Nginx在内存消耗和连接方面更好,Apache在内存消耗和连接方面一般;
  • Nginx的性能和可伸缩性不依赖于硬件,Apache依赖于CPU和内存等硬件;
  • Nginx支持热部署,Apache不支持热部署;
  • Nginx对于静态文件处理具有更高效率,Apache相对一般;
  • Nginx在反向代理场景具有明显优势,Apache相对一般。

Nginx访问控制

安装

关闭防火墙

安装依赖包

#nginx的配置及运行需要pcre、zlib等软件包的支持,因此需要安装这些软件的开发包,以便提供相应的库和头文件
yum -y install pcre-devel zlib-devel gcc gcc-c++ make

在这里插入图片描述

创建运行用户、组

创建运行用户、组(Nginx服务程序默认以nobody 身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限)

useradd -M -s /sbin/nologin nginx

编译安装Nginx

cd /opt
tar zxvf nginx-1.12.0.tar.gz -C /opt/cd nginx-1.12.0/
./ configure \
--prefix=/usr/local/nginx \     #指定nginx的安装路径
--user=nginx \                  #指定用户名
--group=nginx \                 #指定组名
--with-http_stub_status_module  #启用http_stub_status_module 模块以支持状态统计make && make installln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ #让系统识别nginx的操作命令

在这里插入图片描述

启动前先关掉之前装的apache服务

在这里插入图片描述

检查、启动、重启、停止 nginx服务

nginx -t   #检查配置文件是否配置正确
nginx      #启动#停止
cat /usr/local/nginx/logs/nginx.pid #先查看nginx的PID号
kill -3 <PID号> #-3保证数据不丢失
kill -s QUIT <PID号>
killall -3 nginx
killall -s QUIT nginx#重载
kill -1 <PID号>
kill -s HUP <PID号>
killall -1 nginx
killall -s HUP nginxkill -USR1 <PID号> #日志分割,重新打开日志文件
kill -USR2<PID号>  #平滑升级
nginx -v           #查看版本号新版本升级:
tar -zxvf nginx-1.xx.xx.tar.gz
cd nginx-1.xx.xx
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module \
--with-http_ssl_module

在这里插入图片描述
nginx #启动服务
检查端口是否开启
在这里插入图片描述

查看进程号
在这里插入图片描述
使用kill命令杀死进程号即可停止nginx服务

配置 Nginx服务管理

vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecrReload=/bin/kill -s HUP $MAINPID
ExecrStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.targetchmod 754 /lib/systemd/system/nginx.service
systemctl start nginx.service
systemctl enable nginx.service

在这里插入图片描述

认识Nginx服务的主配值文件nginx.conf

1.全局块
配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。

2.events块:
配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。

3.http块:
可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。
如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。

4.server块:
配置虚拟主机的相关参数,一个http中可以有多个server。

5.location块:
配置请求的路由,以及各种页面的处理情况。

vim /usr/local/nginx/conf/nginx.conf

1.全局设置

cat /proc/ cpuinfo l grep -c processor#查看cpu内核数#user nobody;              #运行用户,若编译时未指定则默认为nobody
worker_processes 1;        #工作进程数量,可配置成服务器内核数*2,如果网站访问量不大,一般设为1就够用了
#error_log logs/error.log; #错误日志文件的位置
#pid logs/nginx.pid;       #PID文件的位置

2.I/o事件配置

events {use epoll;                #使用epoll模型,2.6及以上版本的系统内核,建议使用epoll模型以提高性能worker_connections 4096;  #每个进程处理4096个连接
}
#如提高每个进程的连接数还需执行"ulimit -n 65535"命令临时修改本地每个进程可以同时打开的最大文件数。
#在Linux平台上,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。
#可使用ulimit -a命令查看系统允许当前用户进程打开的文件数限制。
#epoll是Linux内核为处理大批句柄而作改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著的减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。uname -r #查看内核版本

3.HTTP配置

http {##文件扩展名与文件类型映射表include    mime.types;##默认文件类型default_typeapplication/octet-stream;##日志格式设定#log_format main '$remote_addr - $remote_user [$time_local] "$request" '#                '$status $body_bytes_sent "$http referer" '#                '"$http user agent" "$http_x _forwarded_for"';##访问日志位置#access_log logs/access.log main;##支持文件发送(下载)sendfile     on;##此选项允许或禁止使用socket的TCP_CORK的选项(发送数据包前先缓存数据),此选项仅在使用sendfile的时候使用#tcp_nopush  on;##连接保持超时时间,单位是秒#keepalive_timeout 0;keepalive_timeout 65;##gzip模块设置,设置是否开启gzip压缩输出#gzip on;##web 服务的监听配置server {##监听地址及端口listen 80;##站点域名,可以有多个,用空格隔开server_name www.jzm.com;##网页的默认字符集charset utf-8;##根目录配置location / {##网站根目录的位置/usr/local/nginx/htmlroot html;##默认首页文件名index index.html index.php;}##内部错误的反馈页面error_page 500 502 503 504/50x.html;##错误页面配置location = /50x.html {root html;}}
}   

日志格式设定


$remote_addr$http_x_forwarded_for用以记录客户端的ip地址;
$remote_user:用来记录客户端用户名称;
$time_local:用来记录访问时间与时区;
$request:用来记录请求的url与http协议;
$status:用来记录请求状态(成功是200);
$body_bytes_sent:记录发送给客户端文件主体内容大小;
$http_referer:用来记录从哪个页面链接访问过来的;
$http_user_agent:记录客户浏览器的相关信息;
通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,通过$remote_add拿到的IP地址是反向代理服务器的iP地址。
反向代理服务器在转发请求的http头信息中,可以增加x_forwarded_for信息,以记录原有客户端的IP地址和原来客户端的请求的服务器地址。location常见配置指令,root、alias、proxy_pass
root(根路径配置):root /var/www/html
请求www.jzm.com/test/1.html,会返回文件/var/www/html/test/1.html

访问状态统计配置

1.先使用命令查看已安装的Nginx是否包含HTTP_STUB_STATUS模块

/usr/local/nginx/sbin/nginx -V
cat /opt/nginx-1.12.0/auto/options | grep YES #可查看nginx已安装的所有模块

修改nginx.conf 配置文件,指定访问位置并添加 stub_status 配置

cd /usr/local/nginx/conf
cp nginx.conf nginx.conf.bak
vim /usr/ local/nginx/ conf/ nginx.conf
......
http {
......server {listen 80;server_name www.jzm.com;charset utf-8;location / {root html;index index.html index.php;}#添加stub_status配置location /status {         #访问位置为/statusstub_status on;        #打开状态统计功能access_log off;        #关闭此位置的日志记录}}
}

重启服务,访问测试

systemctl restart nginx浏览器访问http://192.168.80.30/status
Active connections:表示当前的活动连接数;
server accepts handled requests:表示已经处理的连接信息,三个数字依次表示已处理的连接数、成功的TCP握手次数、己处理的请求数。可curl -Ls http://192.168.80.20/status 结合awk与if语句进行性能监控。

并发量检测脚本

#!/bin/bash
#设置变量,获取当前活跃的连接数
num=$(curl -Ls http://192.168.80.30/status | awk '/Active connections/ {print $3}')if [ "$num" -gt 2 ];thenecho "警告!当前web服务并发量过大!当前并发量为 $num"
fi

基于授权的访问控制

1.生成用户登录码认证文件

yum install -y httpd-tools
htpasswd -c /usr/local/nginx/userlist zhangsan #第一次一定要加-c
cat /usr/local/nginx/userlist
chown nginx /usr/local/nginx/userlist
chmod 400 /usr/local/nginx/userlist

在这里插入图片描述

修改主配置文件相对应目录,添加认证配置项

vim /usr/local/nginx/conf/nginx.conf
......server {location / {......#添加认证配置auth_basic "secret";#设置登录码提示框文字信息auth_basic_user_file /usr/local/nginx/passwd.db;}}

在这里插入图片描述

3.重启服务,访问测试
登录后复制
nginx -t
systemctl restart nginx浏览器访问http://192.168.80.20

在这里插入图片描述

基于客户端的访问控制

访问控制规则如下

deny IP/IP段:拒绝某个IP或IP段的客户端访问。allow IP/IP 段:允许某个IP或IP段的客户端访问。规则从上往下执行,如匹配则停止,不再往下匹配。
vim /usr/ local/nginx/conf/nginx.conf
......
server {
location /{
......
##添加控制规则##
allow 192.168.80.200;
#允许访问的客户端IP
deny all;
#拒绝其它IP客户端访问
systemctl restart nginx

基于域名的Nginx虚拟主机

提供域名解析

echo "192.168.80.20 www.pll.com www.benet.com" >> /etc/hosts

为虚拟主机添加测试文件

mkdir -p /var/www/html/benet
mkdir -p /var/www/html/kgc
echo "www.pll.com" > /var/www/html/jzm/index.html
echo "www.benet.com" > /var/www /html/benet/index.html

修改Nginx配置文件

vim /usr/local/nginx/conf/nginx.conf
......
http {
......server {listen 80;server_name  www.jzm.com;charset utf-8;access_log logs/www.jzm.access.log;location / {root   /var/www/html/jzm;index  index.html index.php;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}server {listen 80;server_name www.benet.com;charset utf-8;access_log logs/www.benet.access.log;location / {root /var/www/html/benet;index index.html index.php;}error_page 500 502 503 504 /50x.html;location = 50x.html{root html;}}}#检查语法
nginx -t
systemctl restart nginx
#浏览器访问
http://www.jzm.com/
http://www.benet.com/

基于IP的Nginx虚拟主机

ifconfig ens33:0 192.168.80.120 netmask 255.255.255.0echo "192.168.80.20 www.jzm.com" >> /etc/hosts
echo "192.168.80.120 www.benet.com" >> /etc/hosts
vim /usr/local/nginx/conf/nginx.conf
......
http {
......server {listen 192.168.80.20:80;server_name  www.jzm.com;charset utf-8;access_log logs/www.jzm.access.log;location / {root   /var/www/html/jzm;index  index.html index.php;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}server {listen 192.168.80.120:80;server_name www.benet.com;charset utf-8;access_log logs/www.benet.access.log;location / {root /var/www/html/benet;index index.html index.php;}error_page 500 502 503 504 /50x.html;location = 50x.html{root html;}}
}systemctl restart nginx
#浏览器访问
http://192.168.80.20/
http://192.168.80.120/

基于端口的 Nginx 虚拟主机

vim /usr/local/nginx/conf/nginx.conf
......
http {
......server {listen 192.168.80.20:80;server_name  www.jzm.com;charset utf-8;access_log logs/www.jzm.access.log;location / {root   /var/www/html/jzm;index  index.html index.php;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}}server {listen 192.168.80.120:8080;server_name www.benet.com;charset utf-8;access_log logs/www.benet.access.log;location / {root /var/www/html/benet;index index.html index.php;}error_page 500 502 503 504 /50x.html;location = 50x.html{root html;}}
}	systemctl restart nginx
浏览器访问
http://192.168.80.20:8080
http://192.168.80.120:8888

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_841228.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

最新微信公众号文章采集发布到destoon网站,免费教程!

DESTOON B2B网站管理系统是一套基于PHPMySQL的开源B2B电子商务行业门户网站解决方案&#xff0c;当前已发布会员、分站、商城、供应、求购、行情、公司、展会、文章、信息、品牌、团购、图库、专题、视频、下载、人才、知道等模型 下面教大家如何用孤狼公众号助手发布文章 1.…

腾讯云Linux云服务器搭建网站

腾讯云Linux云服务器搭建网站 基本准备及操作 这里的安装过程使用系统自带的yum工具进行安装 安装jdk和java运行环境安装mysql安装tomcat安装httpd服务部署web项目到服务器实现从服务器tomcat上下载文件 1.安装jdk 使用如下指令可以安装1.8版本的jdk yum -y install java-1.…

Nodejs使用实例——网站登录验证

JS是脚本语言&#xff0c;脚本语言都需要一个解析器才能运行。对于写在HTML页面里的JS&#xff0c;浏览器充当了解析器的角色。而对于需要独立运行的JS&#xff0c;NodeJS就是一个解析器。每一种解析器都是一个运行环境&#xff0c;不但允许JS定义各种数据结构&#xff0c;进行…

tm是什么域名_关于网站收录排名那些事-你的网站为什么不被收录?

网站做好后&#xff0c;一定会有一个疑问&#xff0c;网站如何才让百度收录&#xff0c;别人可以在百度搜索到你的网站呢&#xff1f;本文就来跟大家聊五毛钱的关于网站收录那些事。温馨提示:本文介绍的这些内容只是加快网站被搜索引擎收录&#xff0c;你不做&#xff0c;早晚也…

java搭建云手机,使用华为云服务器搭建一个简单网站(内容全面)

一、购买服务器因为遇上华为云服务器打折活动&#xff0c;因此就买了一年的华为云服务器。购买过程如下&#xff1a;首先是去华为云官网注册账号&#xff0c;如果是学生进行学生认证&#xff0c;然后搜索“学生套餐”&#xff0c;点击“参与”就会出现一下界面&#xff1a;按自…

Asp.net网站开发(一)LINQ TO SQL 之动态数据支持

LinQ to SQL动态数据支持 动态数据支持&#xff0c;它允许开发人员不用编写一行代码就可以快速的创建使用linq to sql对象模型的数据驱动网站。 创建方法&#xff1a; 1. 创建asp.net Dynamic data站点 新建项目——web——asp.net Dynamic data LINQ TO SQl 应用程序——…

Asp.net网站开发(一)LINQ TO SQL 之八大字句

1. from in子句&#xff1a;指定查询操作的数据源和变量范围//创建LinqDB数据库上下文实例DataClasses1DataContext db new DataClasses1DataContext();//使用lINQ查询表达式查询数据var query from stu in db.studentjoin m in db.mark on stu.sid equals m.sidsele…

Asp.net网站开发(二)HttpHandler

模版和处理程序 封面数字水印&#xff1a;运用httphandler技术 封面数字水印的实现&#xff1a; 1.创建一个Ihttphandler的类Handler12.在Handler1中写代码 using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.IO; using Sys…

Asp.net网站开发(二)用户控件

用户控件 定义&#xff1a; 在 ASP.NET 中&#xff1a;使用与 ASP.NET 页相同的语法&#xff0c;以声明方式创作的服务器控件。该控件用 .ascx 扩展名保存为文本文件。用户控件允许对页功能进行分区和重用。第一次请求时&#xff0c;页框架立即将用户控件分析为从 System.Web.U…

Asp.net网站开发(一)LINQ TO SQL 之LINQ TO SQL类

datacontext类的方法 常用的方法&#xff1a; 执行sql命令的ExecuteQuery方法查询if(!IsPostBack){DataClasses1DataContext db new DataClasses1DataContext();string s "select * from student ";GridView1.DataSourcedb.ExecuteQuery<student>(s);GridVi…

Asp.net网站开发(三)成员资格和角色管理

成员资格管理 Membership类用于验证用户凭证并管理用户设置 Membership属性&#xff1a;ApplicationName获取或设置应用程序的名称。EnablePasswordReset获得一个值&#xff0c;指示当前成员资格提供程序是否配置为允许用户重置其密码。EnablePasswordRetrieval获得一个值&…

Asp.net网站开发(四)个性化用户设置

个性化用户设置 1.先新建一个网站&#xff0c;然后配置web.config文件<connectionStrings><add name"aspnetdbConnectionString" connectionString"Data Source.;Initial Catalogaspnetdb;Integrated SecurityTrue"providerName"System.Data…

微信公众号用户与网站用户的绑定方案

现在很多网站都已经建立了一套完整的用户账号体系&#xff0c;基于这套体系&#xff0c;再做其他应用的用户扩展就非常方便。例如&#xff0c;有了微软的outlook账户&#xff0c;就可以登录win8&#xff0c;可以登录微软的邮箱&#xff0c;还可以登录skype。同样地&#xff0c;…

为什么要把系统拆分成分布式的?为啥要用dubbo?_面向服务的分布式网站架构设计...

传统的架构但是如果要是有高并发的话&#xff0c;那么这样的架构就会出问题高并发的架构可以使用负载均衡的方式&#xff0c;设置一个负载均衡服务器&#xff0c;这个服务器根据不同tomcat服务器的压力来确定使用其中的一个服务器来处理用户请求&#xff0c;使得压力最小的处理…

html中使用什么标签做的导航栏_网站导航:7个最佳实践,设计技巧和警示

一些小的事物可以创造大的变化&#xff0c;网站导航栏就是一个很好的例子。导航的结构和标签可能会对结果产生巨大影响&#xff0c;原因如下&#xff1a;导航会影响流量&#xff1a;你的网站在搜索引擎中的排名高低会影响你从搜索中获得的流量量的多少导航会影响转化&#xff1…

seo按天扣费系统_SEO优化有哪些痛点?

大数据时代的到来&#xff0c;互联网的普及给企业带来了全新的营销模式&#xff0c;信息数据化的模式下&#xff0c;企业纷纷开拓线上业务&#xff0c;企业们都想在这个大市场上分得一杯羹&#xff0c;抢战先机那就得比别人先找对方法。对于企业来说SEO优化和全网推广是互联网推…

我的家乡网站_中国日记|电影《我和我的家乡》背后藏着哪些秘密

这个“十一”两节相逢&#xff0c;电影市场也热闹起来。一部《我和我的家乡》让观众笑泪齐飞&#xff0c;收获了久违的欢乐与感动。故乡今夜思千里&#xff0c;华灯璀璨待君归。《北京好人》《天上掉下个UFO》《最后一课》《回乡之路》《神笔马亮》——五个单元&#xff0c;五个…

php与mysql网站设计案例,基于Web的手工网站的设计与实现(PHP,MySQL)(含录像)

基于Web的手工网站的设计与实现(,MySQL)(含录像)(任务书,开题报告,毕业论文12500字,程序代码,MySQL数据库)系统功能需求概述手工材料网系统主要有六大模块&#xff1a;系统设置模块、分类管理模块、商品管理模块、订单管理模块、留言管理模块、分享管理模块。系统分为前台、后台…

javascript正则表达式判断文件夹名称是否有误_JavaScript网站开发——第三天

十二&#xff0c;DOM1&#xff0c;什么是DOMDOM全称 Document Object Model&#xff0c;即文档对象模型&#xff0c;它允许脚本(js)控制Web页面、窗口和文档。实现了JS可以通过操作BOM来实现浏览器的各种行为&#xff0c;起到了桥梁和结构的作用。做网页的都知道&#xff0c;想…

图片优化_网站优化如何对网站的图片进行优化

网站优化的方式多种多样&#xff0c;图片优化就是其中一种&#xff0c;好的图片可以给用户带来一定的视觉冲击力。很多网站管理员认为图片优化就只是上传一张图片而已&#xff0c;其实没有这么简单&#xff0c;从网站优化的角度来讲&#xff0c;除了要注意网站的大小、尺寸、清…