Nginx网站服务

article/2025/9/25 22:12:25

文章目录

  • 一.编译安装Nginx服务
    • (一)认识Nginx服务的主配置文件
    • (二)日志格式设定
    • (三)访问状态统计配置
    • (四)基于授权的访问控制
    • (五)基于客户端的访问控制
  • 二.域名主机的访问
    • (一)基于域名的Nginx虚拟主机
    • (二)基于IP的Nginx虚拟主机
    • (三)基于端口的Nginx虚拟主机

一.编译安装Nginx服务

  1. 关闭防火墙,将安装Apache所需软件包传到/opt目录下
systemctl stop firewalld
systemctl disable firewalld
setenforce 0nginx-1.12.0.tar.gz
  1. 安装依赖包
yum -y install pcre-devel zlib-devel gcc gcc-c++ make
  1. 创建运行用户、组(Nginx 服务程序默认以 nobody 身份运行,建议为其创建专门的用户账号,以便更准确地控制其访问权限)
useradd -M -s /sbin/nologin nginx
  1. 编译安装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的操作命令
  1. 检查、启动、重启、停止 nginx服务
nginx -t								#检查配置文件是否配置正确
#启动
nginx									
#停止
cat /usr/local/nginx/logs/nginx.pid		#先查看nginx的PID号
kill -3 <PID号>
kill -s QUIT <PID号>
killall -3 nginx
killall -s QUIT nginx
#重载
kill -1 <PID号>
kill -s HUP <PID号>
killall -1 nginx
killall -s HUP nginx
#日志分隔,重新打开日志文件
kill -USR1 <PID号>
#平滑升级
kill -USR2 <PID号>

在这里插入图片描述

  1. 添加 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 1esac
exit 0chmod +x /etc/init.d/nginx
chkconfig --add nginx							#添加为系统服务
systemctl stop nginx
systemctl start 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服务的主配置文件

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 文件的位置
  1. I/O 事件配置
events {use epoll; 					#使用 epoll 模型,2.6及以上版本的系统内核,建议使用epoll模型以提高性能worker_connections 4096; 	#每个进程处理 4096 个连接
}
#如提高每个进程的连接数还需执行“ulimit -n 65535”命令临时修改本地每个进程可以同时打开的最大文件数。
#在Linux平台上,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。
#可使用ulimit -a命令查看系统允许当前用户进程打开的文件数限制.
  1. 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.qiaoer.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(根路径配置):请求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.qiaoer.com;charset utf-8;location / {root html;index index.html index.php;}##添加 stub_status 配置##location /status { 					#访问位置为/statusstub_status on; 				#打开状态统计功能access_log off; 				#关闭此位置的日志记录}}
}

在这里插入图片描述

  1. 重启服务,访问测试
systemctl restart nginx浏览器访问 http://192.168.100.60/status
Active connections :表示当前的活动连接数;
server accepts handled requests :表示已经处理的连接信息,三个数字依次表示已处理的连接数、成功的TCP握手次数、 已处理的请求数。

在这里插入图片描述

(四)基于授权的访问控制

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

在这里插入图片描述

  1. 修改主配置文件相对应目录,添加认证配置项
vim /usr/local/nginx/conf/nginx.conf
......server {location / {......##添加认证配置##auth_basic "secret";auth_basic_user_file /usr/local/nginx/passwd.db;}}

在这里插入图片描述

  1. 重启服务,访问测试
nginx -t
systemctl restart nginx浏览器访问 http://192.168.100.60

在这里插入图片描述
在这里插入图片描述

(五)基于客户端的访问控制

访问控制规则:

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

二.域名主机的访问

(一)基于域名的Nginx虚拟主机

  1. 为虚拟主机提供域名解析
echo "192.168.100.60 www.accp.com wwww.benet.com" >> /etc/hosts
  1. 为虚拟主机准备网页文档
mkdir -p /var/www/html/benet
mkdir -p /var/www/html/accp
echo "<h1>www.accp.com</h1>" > /var/www/html/accp/index.html
echo "<h1>www.benet.com</h1>" > /var/www/html/benet/index.html
  1. 修改Nginx的配置文件
vim /usr/local/nginx/conf/nginx.conf
......
http {
......server {listen 80;server_name www.qiaoer.com;					#设置域名www.qiaoer.comcharset utf-8;access_log logs/www.qiaoer.access.log; location / {root /var/www/html/accp;					#设置www.accp.com 的工作目录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;					#设置域名www.benet.comcharset 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;}}	
}
  1. 重启服务,访问测试
systemctl restart nginx浏览器访问
http://www.accp.com
http://www.benet.com

在这里插入图片描述

(二)基于IP的Nginx虚拟主机

ifconfig ens33:0 192.168.100.60 netmask 255.255.255.0vim /usr/local/nginx/conf/nginx.conf
......
http {
......server {listen 192.168.100.20:80;					#设置监听地址192.168.80.10server_name www.accp.com;charset utf-8;access_log logs/www.accp.access.log; location / {root /var/www/html/accp;index index.html index.php;}error_page 500 502 503 504 /50x.html;location = 50x.html{root html;}}server {listen 192.168.100.60:80;					#设置监听地址192.168.80.11server_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.100.20
http://192.168.100.60

在这里插入图片描述

(三)基于端口的Nginx虚拟主机

vim /usr/local/nginx/conf/nginx.conf
......
http {
......server {listen 192.168.100.60:8080;					#设置监听 8080 端口server_name www.accp.com;charset utf-8;access_log logs/www.accp.access.log; location / {root /var/www/html/accp;index index.html index.php;}error_page 500 502 503 504 /50x.html;location = 50x.html{root html;}}server {listen 192.168.100.60:8888;					#设置监听 8888 端口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.100.60:8080
http://192.168.100.60:8888

在这里插入图片描述
在这里插入图片描述


http://chatgpt.dhexx.cn/article/oXNEpM3F.shtml

相关文章

Nginx的安装---编译安装

编译安装 1、安装编译环境 yum -y install gcc gcc-c make ncurses ncurses-devel2、安装pcre软件包&#xff08;使nginx支持http rewrite模块&#xff09; yum install -y pcre pcre-devel3、安装openssl-devel&#xff08;使nginx支持ssl&#xff09; yum install -y ope…

2021年计算机保研面试题

准备计算机保研面试题 注意点 大家都是第一次~~~ 没有保研经验&#xff0c;所以担心会被问专业课知识相关的东西。但是结合博主自己的经历&#xff0c;本人双非保到某985&#xff0c;过程中问的最多的是项目相关问题&#xff0c;并不会设计太多专业课问题&#xff0c;问的话也…

linux 网络 sk_buff结构

一、简介 sk_buff的意思是socket buffer&#xff0c;这是Linux网络子系统中的核心数据结构。 定义在 <include/linux/skbuff.h> 中&#xff0c;它由许多变量组成&#xff0c;目标就是满足所有网络协议的需要。 sk_buff 在不同的网络层被使用&#xff08;MAC 或其他在 L…

梳理50道经典计算机网络面试题

我梳理了50道计算机网络面试题&#xff0c;每一道题目都特别经典&#xff0c;大厂也非常喜欢问。相信大家看完&#xff0c;会有新的收获滴~ 1. 说说HTTP常用的状态码及其含义&#xff1f; 思路: 这道面试题主要考察候选人&#xff0c;是否掌握HTTP状态码这个基础知识点。 不管是…

24 张图总结 TCP 基础知识,看完我飘了。

TCP 是一种面向连接的单播协议&#xff0c;在 TCP 中&#xff0c;并不存在多播、广播的这种行为&#xff0c;因为 TCP 报文段中能明确发送方和接受方的 IP 地址。 在发送数据前&#xff0c;相互通信的双方&#xff08;即发送方和接受方&#xff09;需要建立一条连接&#xff0…

【随机过程】19 - 随机过程的线性预测问题

随机过程的线性预测问题 文章目录 随机过程的线性预测问题1. 随机过程的估计问题概述1.1 预测问题1.2 内插问题1.3 滤波问题 2. 随机过程的可预测性2.1 新息过程2.1.1 信息过程的定义2.1.2 估计的子空间分解2.1.3 新息过程的性质 2.2 随机过程的正则性与奇异性2.2.1 正则性和奇…

计算机网络传输层测试

一 单项选择题 1.下列选项中&#xff0c;&#xff08; D &#xff09;是用于传输层寻址的。 A.MAC地址 B.IPv4地址 C.IPv6地址 D.端口 解析&#xff1a;传输层对主机上的不同网络进程进行了编号&#xff0c;用不同的数字区分不同的网络进程。传输层标识网络进程的数字称为传…

上岸阿里了

大家好&#xff0c;我是老王&#xff0c;收到来自近期成功上岸的粉丝分享的阿里面试真题&#xff0c;分享给大家参考下&#xff0c;希望大家看完成功面试上大厂Offer。 01.薪资体系 新技术用到的也很多&#xff0c;也是很多人想要进入的大厂备选之一。 阿里的薪资结构&#xf…

2W字!梳理50道经典计算机网络面试题(收藏版)

1. 说说HTTP常用的状态码及其含义&#xff1f; 思路: 这道面试题主要考察候选人&#xff0c;是否掌握HTTP状态码这个基础知识点。 不管是不是面试需要&#xff0c;我们都要知道&#xff0c;日常开发中的这几个状态码的含义哈&#xff1a; 2. HTTP 常用的请求方式&#xff0c;区…

Netty 单机百万连接测试

1.Netty框架简介 1.1.Netty简介 netty是jboss提供的一个java开源框架&#xff0c;netty提供异步的、事件驱动的网络应用程序框架和工具&#xff0c;用以快速开发高性能、高可用性的网络服务器和客户端程序。也就是说netty是一个基于nio的编程框架&#xff0c;使用netty可以快…

LPCNET: 通过线性预测改进神经语音合成

LPCNET: 通过线性预测改进神经语音合成 摘要索引词 -- 神经音频合成 参数编码 WaveRNN 1.导言2.WAVERNN3.LPCNET3.1条件参数3.2 预加重和量化3.3 线性预测3.4 输出层3.5 稀疏矩阵3.6 嵌入和代数简化3.7 从概率分布中抽取样本3.8 训练噪声注入 4. 评估4.1 复杂度4.2 实验设置4.3…

TCP拥塞机制学习

TCP拥塞机制学习 写在前面 很早就想总结一下tcp方面的知识了&#xff0c;心动不如行动&#xff0c;这一块面试重点&#xff0c;而其也是coder的必修课。 一、TCP头部报文格式 了解任何一个协议都要从它的协议报文开始&#xff0c;我们先看一下他的格式和一些基本概念。 TC…

3 万字 + 100 张图带你彻底搞懂 TCP 面试题(强烈建议收藏)

大家好&#xff0c;我是小林&#xff0c;一个专为大家图解的工具人。 不管面试 Java 、C/C、Python 等开发岗位&#xff0c; TCP 的知识点可以说是必问的了。 任 TCP 虐我千百遍&#xff0c;我仍待 TCP 如初恋。 过去不会没关系&#xff0c;今天就让我们来消除这份恐惧&…

计算机网络常见知识点总结

网络 1.IP地址分类 网络为全为1的是广播地址&#xff0c;所以要减一&#xff0c;因此127减一为126 A类IP地址 地址范围1.0.0.0到127.255.255.255。可用的A类网络有126个 B类IP地址地址范围128.0.0.0到191.255.255.255。可用的B类网络有16382个 C类IP地址范围从192.0.0.0到223.…

手撸架构,网络 面试36问

TCP 链接 三次握手&#xff1a; 首先服务器端处于LISTEN状态。当客户端想要建立连接时&#xff0c;他将发送一个SYN包&#xff0c;序列号假如为u。客户端进入SYN_SENT状态。当服务器端收到了这个SYN包&#xff0c;如果服务器同意建立连接&#xff0c;他将发送一个SYN&#xf…

Java面试必背八股文[11]:计算机网络

OSI与TCP/IP各层的结构&#xff1f; 答:OSI分层 &#xff08;7层&#xff09;&#xff1a;物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。 TCP/IP分层&#xff08;4层&#xff09;&#xff1a;网络接口层、 网际层、运输层、 应用层。 五层协议 &#xff08;…

深入理解Linux网络——内核是如何发送网络包的

文章目录 一、相关实际问题二、网络包发送过程总览三、网卡启动准备四、数据从用户进程到网卡的详细过程1&#xff09;系统调用实现2&#xff09;传输层处理1. 传输层拷贝2. 传输层发送 3&#xff09;网络层发送处理4&#xff09;邻居子系统5&#xff09;网络设备子系统6&#…

TCP的重传机制、滑动窗口、流量控制、拥塞控制,这一篇就够了

对于TCP 的重传机制、滑动窗口、流量控制、拥塞控制这几个知识点&#xff0c;做了详细介绍&#xff0c;图解形式快速理解。 重传机制 TCP 实现可靠传输的方式之一&#xff0c;是通过序列号与确认应答。 在 TCP 中&#xff0c;当发送端的数据到达接收主机时&#xff0c;接收端…

Symmetric diffeomorphic image registration with cross-correlation

Symmetric diffeomorphic image registration with cross-correlation: Evaluating automated labeling of elderly and neurodegenerative brain 摘要 现代神经影像学最具挑战性的问题之一是对神经变性的详细描述&#xff0c;量化空间和纵向萎缩模式是这一过程的重要组成部分…

非科班秋招面试总结

目录 javaSE方面 HashMap与ConcurrentHashMap(hash冲突&#xff0c;扩容机制&#xff0c;1.7与1.8的区别&#xff0c;锁) 面向对象特点 泛型 String StringBuffer StringBuilder Overload 与Override abstract 与interface final finally finalize 1.8的新特性 JVM方面 类加载机…