web服务器+selinux实验

server/2025/1/14 18:55:24/

实验1:基本实现

yum install nginx -y
systemctl start nginx.service

systemctl restart nginx.service

vim /etc/nginx/nginx.conf  修改配置文件

把 root 的路径改为 /var/www/html

echo "hello world" > /var/www/html/index.html   

重启服务

[root@server ~]# curl 192.168.245.128
hello world

 

注意:所有实验中配置更改后都要重启nginx

 实验2:一般实现:修改端口、默认目录、默认文件访问web页面

1. 通过不同的端口访问同一web页面 

在/etc/nginx/conf.d下创建新的文件-- ip.conf
配置如下
server { listen 192.168.245.128:888; location / { root /web/html;} 
} 
如果root在location里面,那么会覆盖server模块里的root

保存后重启服务

 2. 通过不同的默认目录访问同一web页面

 实际就是实验一。因为如果是刚开始的文件,那么显示的应该是linux那个页面

3. 通过不同的文件访问web页面 

mkdir /web/haha

echo "i am haha " > /web/haha/index.html

root /web;  (还是上面那个配置文件,改个路径)

实验3:虚拟主机:基于不同端口、不同目录、不同IP、不同域名访问不同页面 

1. 基于不同端口访问不同页面

server { listen 192.168.245.128:122; location / { root /web/122;} 
} 
server { listen 192.168.245.128:132; location / { root /web/132;} 
} 

2. 基于不同目录访问不同页面

 。。。 感觉和2.3一样

3. 基于不同IP访问不同页面 

nmcli connection modify ens160 +ipv4.addresses 192.168.245.123/24
nmcli connection up ens160
mkdir /web/{123,132}
echo my ip is 123 > /web/123/index.html
echo my ip is 132 > /web/132/index.html
vim /etc/nginx/conf.d/ip.conf
server {
listen 192 .168.245.128:80;
root /web/132;
location / {
index index.html;
}
}
server {
listen 192 .168.245.123:80;
root /web/123;
location / {
index index.html;
}
}

4.基于不同域名访问不同页面 

server {
listen 192.168.245.128:80;
server_name www.xixi132.com;
location / {
root /web/132;
}
}
server {
listen 192.168.245.128:80;
server_name www.haha123.com;
location / {
root /web/123;
}
}

 vim /etc/hosts

实验4:访问控制

1. 基于不同用户的访问控制 

htpasswd -cb /etc/nginx/conf.d/auth_passwd li4 123
htpasswd -cb /etc/nginx/conf.d/auth_passwd2 tom 123
server {
listen 192.168.245.128:80;
location / {
root /web/132;
auth_basic on;   
auth_basic_user_file /etc/nginx/conf.d/auth_passwd;
}
}
server {
listen 192.168.245.123:80;
location / {
root /web/123;
auth_basic on;   
auth_basic_user_file /etc/nginx/conf.d/auth_passwd;
}
}

 2. 基于源ip的访问控制

server {
listen 80;
location / {
root /web/132;
allow 192.168.245.123/24;
deny 192.168.245.128/24;
}
}

实验5:证书

cd /etc/pki/tls/certs/
openssl genrsa -out miyao.key
openssl req -utf8 -new -key /etc/pki/tls/certs/miyao.key -x509 -days 100 -out /zhengshu.crt
server {
listen 192.168.245.128:443 ssl;
location / {
root /web/132;
}
ssl_certificate "/zhengshu.crt";
ssl_certificate_key "/etc/pki/tls/certs/miyao.key";
}

实验6nginx发布动态页面的方法 

yum install php php-fpm -y
echo "<?php phpinfo(); ?>" > /web/php/index.php

server {
listen 80;
location / {
root /web/php;
include /etc/nginx/default.d/php.conf;
}
}

selinux

1. 在enforing 模式下,nginx的端口号被修改,并是实现页面正常访问

要想访问的时候不是403,那么就要修改nginx中root 目录的安全上下文

[root@server ~]# ls -Zd /web/132

unconfined_u:object_r:default_t:s0 /web/132

[root@server ~]# ls -Zd /usr/share/nginx/html/

system_u:object_r:httpd_sys_content_t:s0 /usr/share/nginx/html/

[root@server ~]# chcon -Rv -t httpd_sys_content_t /web/132

正在更改 '/web/132/index.html' 的安全上下文

正在更改 '/web/132/index.php' 的安全上下文

正在更改 '/web/132' 的安全上下文

[root@server ~]# ls -Zd /web/132

unconfined_u:object_r:httpd_sys_content_t:s0 /web/132

查看selinux允许的端口号
semanage port -l | grep http_port_t
使用semanage命令将777端口号添加到http_port_t类型列表中
semanage port -a -t http_port_t -p tcp 777
server {
listen 777;
location / {
root /web/132;
}
}

2. enforing 模式下,演示ssh端口号修改的selinux设定


vim /etc/ssh/sshd_config # 修改ssh的端口号为33
semanage port -a -t ssh_port_t -p tcp 2222 # 添加33端口


http://www.ppmy.cn/server/158358.html

相关文章

django网上商城系统

Django网上商城系统是一种基于Django框架构建的电子商务解决方案&#xff0c;它充分利用了Django框架的强大功能&#xff0c;为开发者提供了一个快速构建在线商店的平台。 一、系统架构与技术栈 Django网上商城系统采用MVC&#xff08;模型-视图-控制器&#xff09;架构&…

深度学习与计算机视觉 (博士)

文章目录 零、计算机视觉概述一、深度学习相关概念1.学习率η2.batchsize和epoch3.端到端(End-to-End)、序列到序列(Seq-to-Seq)4.消融实验5.学习方式6.监督学习的方式(1)有监督学习(2)强监督学习(3)弱监督学习(4)半监督学习(5)自监督学习(6)无监督学习(7)总结&#xff1a;不同…

R语言的面向对象编程

R语言的面向对象编程 引言 R语言是一种广泛应用于统计分析、数据可视化以及数据科学的编程语言。在传统的编程范式中&#xff0c;R语言主要采用的是命令式编程和函数式编程的风格。然而&#xff0c;随着数据科学的深入发展&#xff0c;面向对象编程&#xff08;OOP&#xff0…

Unity3D仿星露谷物语开发22之选择道具特效

1、目标 当在库存栏中选择道具时&#xff0c;Slot会红色高亮&#xff0c;表明一个道具已被选中。再次点击道具红色高亮消失。 2、优化InventoryManager.cs脚本 &#xff08;1&#xff09;新建被选中项目的变量 我们允许有多个库存列表&#xff0c;比如属于player的即库存栏…

【AI游戏】基于OpenAI打造自动生成剧情的 Python 游戏

引言 你是否曾经梦想过成为一名游戏设计师&#xff0c;创造出引人入胜的冒险故事&#xff1f;今天&#xff0c;我将带你使用 OpenAI 的 GPT 模型和 Python 编写一个简单的自动生成剧情游戏。通过这个项目&#xff0c;你可以体验到人工智能在创意写作中的强大能力&#xff0c;并…

Autodl安装tensorflow2.10.0记录

首先租用新实例&#xff08;我选的是3080*2卡&#xff09;&#xff0c;由于基础镜像中没有2.10.0版本&#xff0c;选miniconda3的基础环境 创建虚拟环境&#xff1a;conda create --name xxx python3.8&#xff08;环境名&#xff09;激活虚拟环境&#xff1a;conda activate x…

【ArcGIS技巧】如何给CAD里的面注记导入GIS属性表中

前面分享了GIS怎么给田块加密高程点&#xff0c;但是没有分享每块田的高程对应的是哪块田&#xff0c;今天结合土地整理软件GLAND做一期田块的属性怎么放入GIS属性表当中。 1、GLAND数据 杭州阵列软件&#xff08;GLand&#xff09;是比较专业的土地整理软件&#xff0c;下载之…

如何让 LLM 使用外部函数 or 工具?Llama-3-Groq-8B-Tool-Use 模型使用详解

2024年7月份&#xff0c;Groq 团队在huggingface上发布了基于Meta llama3两个大小&#xff08;8b和70b&#xff09;的开源模型进行微调&#xff08;官网介绍&#xff09;的模型&#xff08;Groq/Llama-3-Groq-8B-Tool-Use 和 Groq/Llama-3-Groq-70B-Tool-Use&#xff09;&#…