Nginx网站服务二

news2025/1/16 11:01:56

目录

编译安装Nginx服务

2.安装依赖包

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

4.编译安装Nginx

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

6.添加 Nginx 系统服务

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

1.全局配置

2.I/O 事件配置

3.HTTP 配置

日志格式设定:

访问状态统计配置

基于授权的访问控制

 基于客户端的访问控制

基于域名的 Nginx 虚拟主机 

 基于IP 的 Nginx 虚拟主机

基于端口的 Nginx 虚拟主机


编译安装Nginx服务

1.关闭防火墙,将安装Apache所需软件包传到/opt目录下
systemctl stop firewalld
systemctl disable firewalld
setenforce 0

nginx-1.12.0.tar.gz

2.安装依赖包

yum -y install pcre-devel zlib-devel gcc gcc-c++ make

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

useradd -M -s /sbin/nologin nginx

4.编译安装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 install

ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/


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

nginx -t

6.添加 Nginx 系统服务

vim /etc/init.d/nginx
#!/bin/bash
#chkconfig: - 99 20
#description:Nginx Service Control Script
COM="/usr/local/nginx/sbin/nginx"
PID="/usr/local/nginx/logs/nginx.pid"
case "$1" in
start)
  $COM
;;

stop)
  kill -s QUIT $(cat $PID)
;;

restart)
  $0 stop
  $0 start
;;

reload)
  kill -s HUP $(cat $PID)
;;

*)
echo "Usage: $0 {start|stop|restart|reload}"
exit 1

esac
exit 0


chmod +x /etc/init.d/nginx
chkconfig --add nginx                            #添加为系统服务
systemctl stop nginx
systemctl start nginx

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

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

1.全局配置

#user nobody;                     #运行用户,若编译时未指定则默认为 nobody
worker_processes 1;             #工作进程数量,可配置成服务器内核数 * 2
#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命令查看系统允许当前用户进程打开的文件数限制.

3.HTTP 配置

http {
    ##文件扩展名与文件类型映射表
    include       mime.types;
    ##默认文件类型
    default_type  application/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;
    ##此选项允许或禁止使用socke的TCP_CORK的选项(发送数据包前先缓存数据),此选项仅在使用sendfile的时候使用
    #tcp_nopush     on;
    ##连接保持超时时间,单位是秒
    #keepalive_timeout  0;
    keepalive_timeout  65;
    ##gzip模块设置,设置是否开启gzip压缩输出
    #gzip  on;
    
    ##Web 服务的监听配置
    server {
        ##监听地址及端口
        listen 80; 
        ##站点域名,可以有多个,用空格隔开
        server_name www.kgc.com;
        ##网页的默认字符集
        charset utf-8;
        ##根目录配置
        location / {
            ##网站根目录的位置/usr/local/nginx/html
            root 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(根路径配置):请求www.kgc.com/test/1.jpg,会返回文件/usr/local/nginx/html/test/1.jpg
alias(别名配置):请求www.kgc.com/test/1.jpg,会返回文件/usr/local/nginx/html/1.jpg
proxy_pass(反向代理配置):
proxy_pass http://127.0.0.1:8080/;            会转发请求到http://127.0.0.1:8080/1.jpg
proxy_pass http://127.0.0.1:8080;             会转发请求到http://127.0.0.1:8080/test/1.jpg

访问状态统计配置

1.先使用命令/usr/local/nginx/sbin/nginx -V 查看已安装的 Nginx 是否包含 HTTP_STUB_STATUS 模块
2.修改 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.kgc.com;
        charset utf-8;
        location / {
            root html;
            index index.html index.php;
        }
        ##添加 stub_status 配置##
        location /status {                     #访问位置为/status
            stub_status on;                 #打开状态统计功能
            access_log off;                 #关闭此位置的日志记录
        }
    }
}

3.重启服务,访问测试
systemctl restart nginx

浏览器访问 http://192.168.190.10/status
Active connections :表示当前的活动连接数;
server accepts handled requests :表示已经处理的连接信息,三个数字依次表示已处理的连接数、成功的TCP握手次数、 已处理的请求数。

基于授权的访问控制

1.生成用户密码认证文件
yum install -y httpd-tools
htpasswd -c /usr/local/nginx/passwd.db zhangsan
chown nginx /usr/local/nginx/passwd.db
chmod 400 /usr/local/nginx/passwd.db

2.修改主配置文件相对应目录,添加认证配置项
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.190.10

 基于客户端的访问控制

访问控制规则如下:
deny IP/IP 段:拒绝某个 IP 或 IP 段的客户端访问。
allow IP/IP 段:允许某个 IP 或 IP 段的客户端访问。
规则从上往下执行,如匹配则停止,不再往下匹配。

vim /usr/local/nginx/conf/nginx.conf
......
    server {
        location / {
            ......
            ##添加控制规则##
            deny 192.168.80.200;                     #拒绝访问的客户端 IP
            allow all;                                #允许其它IP客户端访问
        }
    }

systemctl restart nginx

基于域名的 Nginx 虚拟主机 

1.为虚拟主机提供域名解析
echo "192.168.190.10 www.marongji.com www.benet.com" >> /etc/hosts

2.为虚拟主机准备网页文档
mkdir -p marongji
mkdir -p benet
echo "<h1>www.marongji.com</h1>" > /usr/local/nginx/html
echo "<h1>www.benet.com</h1>" > /usr/local/nginx/html

3.修改Nginx的配置文件
vim /usr/local/nginx/conf/nginx.conf

  server {
        listen       80;
        server_name  www.marongji.com;

        charset utf-8;

        access_log  logs/www.marongji.access.log;

        location / {
         root /usr/local/nginx/html/marongji;
         index index.html index.php index.htm;
}

        access_log  logs/www.marongji.access.log;

        location / {
         root /usr/local/nginx/html/marongji;
         index index.html index.php index.htm;
}

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        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 /usr/local/nginx/html/benet;
        index index.html index.php index.htm;

    }

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

}
 

 

4.重启服务,访问测试
systemctl restart nginx

浏览器访问
http://www.marongji.com
http://www.benet.com
 

 

 

 基于IP 的 Nginx 虚拟主机

ifconfig ens33:0 192.168.190.11 netmask 255.255.255.0 

vim /usr/local/nginx/conf/nginx.conf
......
http {
......
    server {
        listen 192.168.190.10:80;                    #设置监听地址192.168.190.10
        server_name www.kgc.com;
        charset utf-8;
        access_log logs/www.kgc.access.log; 
        location / {
            root /var/www/html/kgc;
            index index.html index.php;
        }
        error_page 500 502 503 504 /50x.html;
        location = 50x.html{
            root html;
        }
    }
    
    server {
        listen 192.168.190.11:80;                    #设置监听地址192.168.190.11
        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.190.10
http://192.168.190.11

基于端口的 Nginx 虚拟主机

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

       server {
        listen       192.168.190.10:8080;
        server_name  www.marongji.com;

        charset utf-8;

        access_log  logs/www.marongji.access.log;

        location / {
         root /usr/local/nginx/html/marongji;
         index index.html index.php index.htm;
}

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
    location = 50x.html {
    root  html;
}
  }
    server {
    listen 192.168.190.10:1010;
    server_name www.benet.com;
    charset utf-8;
    access_log logs/www.benet.access.log;

    location / {
        root /usr/local/nginx/html/benet;
        index index.html index.php index.htm;

    }

    error_page 500 502 503 504 /50x.html;
    location = 50x.html {
        root html;
    }
wq!保存退出

重启服务
systemctl restart nginx

浏览器访问
http://192.168.190.10:8080
http://192.168.190.10:1010

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

前端Vue自定义tabbar底部tabbar凸起tabbar兼容苹果刘海屏小程序和APP

前端Vue自定义tabbar底部tabbar凸起tabbar兼容苹果刘海屏小程序和APP&#xff0c; 下载完整代码请访问uni-app插件市场地址&#xff1a;https://ext.dcloud.net.cn/plugin?id13167 效果图如下&#xff1a; # cc-myTabbar #### 使用方法 使用方法 <!-- tabBarShow&#…

Flutter Dart函数(方法)异常

目录 函数(方法) 可选命名参数 「required」 可选位置参数 默认参数值 匿名方法 函数是一等对象 异常 函数(方法) Dart 是一个真正的面向对象语言&#xff0c;方法也是对象并且具有一种 类型 Function。 这意味着&#xff0c;方法可以赋值给变量&#xff0c;也可以当做…

读发布!设计与部署稳定的分布式系统(第2版)笔记10_自动化和缓慢的响应

1. 工业机器人 1.1. 具有多层防护措施&#xff0c;防止对人员、机器和设施造成损害 1.2. 防护措施能限制机器人的动作和传感器的感知 1.3. 机械臂的旋转范围会远远小于它可以达到的全部运动范围 2. 自动化 2.1. 它更像是工业机器人 2.1.1. 掌握控制层感知系统的当前状态 …

chatgpt赋能python:Python的分割函数:split的介绍和使用方法

Python的分割函数&#xff1a;split的介绍和使用方法 在Python编程中&#xff0c;我们经常需要对字符串进行操作。其中&#xff0c;分割字符串是一项常见的任务。Python中的split()函数可以用于将字符串按照指定的分隔符进行拆分。本文将介绍split()函数的使用方法以及注意事项…

0019-TIPS-2019-tokyowesterns-gnote : switch(jump-table) Doubule Fetch

漏洞源码 #include <linux/module.h> #include <linux/kernel.h> #include <linux/init.h> #include <linux/fs.h> #include <linux/proc_fs.h> #include <linux/string.h> #include <linux/slab.h> #include <asm/uaccess.h>…

python:并发编程(二十)

前言 本文将和大家一起探讨python并发编程的实际项目&#xff1a;win图形界面应用&#xff08;篇二&#xff0c;共八篇&#xff09;&#xff0c;系列文章将会从零开始构建项目&#xff0c;并逐渐完善项目&#xff0c;最终将项目打造成适用于高并发场景的应用。 本文为python并…

C语言贪吃蛇课程设计实验报告(包含贪吃蛇项目源码)

文末有贪吃蛇代码全览,代码有十分细致的注释!!!文末有贪吃蛇代码全览,代码有十分细致的注释!!!文末有贪吃蛇代码全览,代码有十分细致的注释!!! 码文不易&#xff0c;给个免费的小星星和免费的赞吧&#xff0c;关注也行呀(⑅•͈ᴗ•͈).:*♡ 不要白嫖哇(⁍̥̥̥᷄д⁍̥̥…

Mac5款高效实用软件,值得推荐

目录 1.MarginNote 3&#xff1a;阅读批注学习笔记软件 2.iShot&#xff1a;Mac截图、长截图、带壳截图、贴图、标注、取色、录屏、录音、OCR、翻译&#xff0c;合集工具 3.KeyCastr-实时显示按下的按键 4.MindNode-超美观的思维导图 5.One Switch&#xff1a;系统设置一键…

CopyOnWriteArrayList源码

介绍 CopyOnWriteArrayList是Java并发包中提供的一个并发容器&#xff0c;它是个线程安全且读操作无锁的ArrayList&#xff0c;写操作则通过创建底层数组的新副本来实现&#xff0c;是一种读写分离的并发策略 在保证并发读取的前提下&#xff0c;确保了写入时的线程安全&…

百度 RT-DETR : 在实时目标检测上击败所有 YOLO !

论文地址&#xff1a;https://arxiv.org/abs/2304.08069 代码地址&#xff1a;https://github.com/PaddlePaddle/PaddleDetection 最近&#xff0c;基于端到端的 Transformer 检测器&#xff08;DETRs&#xff09;取得了显著的性能。然而&#xff0c;DETRs 的高计算成本问题尚…

chatgpt赋能python:Python的加减乘除使用指南

Python的加减乘除使用指南 Python是一种高级编程语言&#xff0c;其数学计算库和处理数值数据的能力使其成为科学计算&#xff0c;数据分析和机器学习领域的首选语言之一。在Python中&#xff0c;加减乘除是最基本和常用的四种数学计算操作。在本篇文章中&#xff0c;我们将介…

pyqt的学习(三)----鼠标点击和按键处理

QmyChartView 类的说明 QChart 和 QChartView 是基于 Graphics View 结构的绘图类。要对一个 QChart 图表进行鼠 标和按键操作&#xff0c;需要在 QChartView 类里对鼠标和按键事件进行处理&#xff0c;这就需要自定义一个 从 QChartView 继承的类。 QmyChartView 类是从 QC…

津津乐道设计模式 - 策略模式详解(以女友购物策略让你彻底明白)

&#x1f337; 古之立大事者&#xff0c;不惟有超世之才&#xff0c;亦必有坚忍不拔之志 &#x1f390; 个人CSND主页——Micro麦可乐的博客 &#x1f425;《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程&#xff0c;入门到实战 &#x1f33a;《RabbitMQ》…

Git工具【系统学习】

第一章 Git快速入门 1.1 Git概述 Git是一个免费的&#xff0c;开源的分布式版本控制系统&#xff0c;可以快速高效地处理从小型或大型的各种项目。Git易于学习&#xff0c;占用空间小&#xff0c;性能快得惊人。 1.2 SCM概述 SCM&#xff08;Software Configuration Managem…

Deepin Community Live CD New Kernel——自带6.3.8内核的镜像和apt源

镜像介绍 此镜像属于 Deepin Community Live CD 系列&#xff08;Deepin Community Live CD 简称为 DCLC&#xff0c;Deepin Community Live CD 是什么&#xff1f;传送门&#xff1a;https://bbs.deepin.org/post/242933&#xff09;&#xff0c;New Kernel 系列镜像旨在可以…

chatgpt赋能python:Python的下载流程

Python的下载流程 Python是一款流行的编程语言&#xff0c;其掌握程度在当今计算机科学领域越来越受到重视。在本文中&#xff0c;我们将探讨Python的下载流程&#xff0c;为初学者提供一些有用的信息。特别是&#xff0c;我们将着重介绍如何在Windows操作系统上下载Python。 …

Golang每日一练(leetDay0105) 超级丑数、右侧小于当前元素的个数

目录 313. 超级丑数 Super Ugly Number &#x1f31f;&#x1f31f; 315. 计算右侧小于当前元素的个数 Count-of-smaller-numbers-after-self &#x1f31f;&#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Rust每日一练 专栏 Golang每日一练…

chatgpt赋能python:Python下载安装教程

Python下载安装教程 Python是一种高级编程语言&#xff0c;具有简单易学、强大多样的特点&#xff0c;不仅可以用来开发网站、应用程序、游戏&#xff0c;还可以用于数据科学、机器学习、人工智能等领域&#xff0c;被广泛应用于各行各业。 本文将为您提供详细的Python下载安…

MongoDB简介

目录 1、NoSQL概述 2、什么是MongoDB 3、MongoDB特点 一、MongoDB安装&#xff08;docker方式&#xff09; 二、MongoDB安装&#xff08;普通方式&#xff09; 三、MongoDB 概念解析 1、NoSQL概述 NoSQL(NoSQL Not Only SQL)&#xff0c;意即反SQL运动&#xff0c;指的是…

FcaNet: Frequency Channel Attention Networks论文总结

论文&#xff1a;https://arxiv.org/abs/2012.11879 中文版&#xff1a;FcaNet: Frequency Channel Attention Networks 源码&#xff1a;https://github.com/cfzd/FcaNet或https://gitee.com/yasuo_hao/FcaNet 一、论文背景和出发点 问题&#xff1a;许多工作都集中在如何设计…