[root@localhost ~]# mkdir/var/www/html/test/
[root@localhost ~]# firewall-cmd--set-default-zone=trusted
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum install httpd -y
[root@localhost ~]# systemctl start httpd
对一个uri进行验证
[root@localhost ~]# echo '******Test******'> /var/www/html/test/index.html
[root@localhost ~]# vim/etc/httpd/conf/httpd.conf # 配置文件目录
Options Indexes FollowSymLinks
AllowOverride AuthConfig
Require all granted
[root@localhost ~]# vim/var/www/html/test/.htaccess
AuthName"ss"
AuthType"Basic"
AuthUserFile"/etc/httpd/conf/.htpasswd"
Requireuser "tom"
[root@localhost ~]# htpasswd -cm /etc/httpd/conf/.htpasswdtom # 在AuthUserFile指定的文件路径创建密码文件
[root@localhost ~]# htpasswd -m/etc/httpd/conf/.htpasswd tom # 修改用户密码
[root@localhost ~]# htpasswd -D/etc/httpd/conf/.htpasswd tom # 删除用户
apache的FollowSymLinks参数
Alias参数
当client发送一个请求给web服务时,web会在服务端执行这脚本并且将执行的结果返还给client。
apache中Rewrite对URI的重写规则
rewrite语法的格式
开启重写功能
RewriteEngineon
RewriteRule是对URI进行重写
RewriteRule模式1 模式2 [标签]
模式中都支持正则表达式
模式1:原来的
模式2:替换后的
[R]:强制地址重写
[F]:禁用URL,返回403错误
[L]:后面就没有规则了,我就是最后一条,后面即使有规则也不生效
[N]:表示从第一条规则重新分析
[C]:结合下一条规则一起使用
对url的重写
如果没有对httpd.conf配置文件的权限,可以使用.htaccess来修改某个目录的属性
想修改哪个目录的属性,就在哪个目录里创建一个.htaccess文件这样子能覆盖/etc/htttpd/httpd.conf文件的设置,在httpd.conf里面所设置的都能一个文档目录中的.htaccess文件中来设置
nginx的配置
[root@nginx ~]# firewall-cmd --set-default-zone=trusted
[root@nginx ~]# setenforce 0
nginx安装与使用
yum源的配置
[nginx]
name=nginxrepo
baseurl=http://nginx.org/packages/rhel/7/$basearch/
gpgcheck=0
enabled=1
[root@nginx ~]# yum install nginx -y
[root@nginx ~]# ls -al/usr/share/nginx/html/ # nginx的文档目录
如果http_user_agent ~ QQBrowser则重定向到/qq/index.html,如果不匹配则拒绝192.168.30.1访问
选项必须以分号结束,选项没有出现在server中则会影响所有的server,如果server中出现的选项则以server中的选项生效
有多个虚拟机主机写多个server {
}
全局性配置
--------------
--------------
http{
选项1;
选项2;
server {
location 匹配 条件 { # 对于URI进行设置
# = 严格匹配
# location =/exam/ {
# }
# ~ 可以写正则,但是大小写区分
# ~* 和上面意思一样,但是忽略大小写
# 在location里是可以写if判断的,格式:
# if (判断) {
# 语句1;
# }
}
}
server {
}
}
[root@nginx ~]# cat /etc/nginx/nginx.conf # nginx主配置文件
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/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"';
#1.84.81.232 - - [11/Mar/2017:02:48:51 -0500] "GET /yer/code/ncloginHTTP/1.1" 200 1399 #"http://bx.elegantliving.cn/yer/core/login/login.jsp""Mozilla/5.0 (Windows NT 10.0; Win64; #x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/51.0.27:
access_log /var/log/nginx/access.log main; # 所有的虚拟主机产生的日志都记录在一个日志文件中,如果想让不同的虚拟主机的所产生的日志都记录在不同的日志文件中
在,注释nginx.conf文件中的日志行然后在/etc/nginx/conf.d目录中的配置文定义曲线部分
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/log/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
[root@nginx ~]# vim/etc/nginx/conf.d/default.conf # 目录下配置文件讲解
server {
listen 80;
server_name 192.168.5.90;
charset utf-8;
access_log /var/log/nginx/nginx.access.log main;
location / { # 相当于apache中的Directory用于对目录的权限设置等
root /usr/share/nginx/html;
index index.html index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
加不加/index.html访问的效果都是一样的但由是location的匹配规则:
break相当于apache重写规则中的标签[R]
多虚拟主机配置
discuz论坛的搭建
数据库的安装配置
[root@nginx ~]# yum install mariadb-serverphp\* -y
[root@nginx ~]# systemctl start mariadb ;systemctl enable mariadb
[root@nginx ~]# mysql -uroot
MariaDB [(none)]> create databaseDiscuz;
MariaDB [(none)]> grant all on Discuz.*to Discuz@'localhost' identified by 'Discuz' ;
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> \q
上传discuz论坛网页文件
到http://www.discuz.net/forum-10-1.html下载Discuz_X3.3_SC_UTF8.zip
解压得如下文件夹
将upload里面的文件上传到nginx文档目录中
编辑nginx配置文件
运行php环境
Discuz初始化设置
在nginx上配置ssl
生成密钥对,密钥对需要pem格式的不然重启服务后会报错
如果访问的主页不存在则会显示网页的目录,
autoindex on相当于apache中的Options Indexes FollowSymLinks。
nginx的负载均衡
访问网站的时候为了提高网站的速度需要配置代理服务器
代理服务器---在客户端设置
为了提高客户端访问的速度,当客户端访问某个页面的时候首先会把请求发给代理服务器,代理服务器收到客户端发送的这个请求会在自己的本地查看是否有这个页面,如果有的话则会将这个页面发送给客户端,如果没有代理服务器则会向真实服务器发送请求并且将这个页面缓存下来。
反向代理---在服务器设置
环境的准备
[root@nginx ~]# sysctl -wnet.ipv4.ip_forward=1 # 开启ip转发功能
[root@s1 ~]# firewall-cmd--set-default-zone=trusted #nginx、s2同样不考虑防火墙
root@s1 ~]# setenforce 0 # nginx、s2同样不考虑selinux
[root@s1 ~]# sed -i '$aGATEWAY=192.168.122.1' /etc/sysconfig/network-scripts/ifcfg-eth0
[root@s1 ~]# systemctl restart network # 将s2的网关也设置为192.168.122.1
[root@s1 ~]# yum install httpd -y # s2也安装
[root@s1 ~]# echo 'xxxx' >/var/www/html/index.html
[root@s2 ~]# echo 'yyyy' >/var/www/html/index.html
[root@nginx ~]# egrep -v '(^*#|^$)'/etc/nginx/nginx.conf
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events{
worker_connections 1024;
}
http{
upstream myapp1 {
server 192.168.122.31;
server 192.168.122.32;
}
include /etc/nginx/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 /var/log/nginx/access.log main;
sendfile on;
keepalive_timeout 65;
include /etc/nginx/conf.d/*.conf;
}
[root@nginx ~]# egrep -v '(^*#|^$)'/etc/nginx/conf.d/default.conf
server{
listen 80;
location / {
proxy_pass http://myapp1;
}
}
Squid的配置使用