Nginx-学习目录
1、根据用户浏览器请求头中携带的语言调度到不同的页面
1.1、代码目录准备
]# tree /opt/code/
/opt/code/
├── en
│ └── index.html
└── zh
└── index.html
1.2、配置nginx
cat >/etc/nginx/conf.d/rewrite.cyc.com.conf<<'EOF'
server {
listen 80;
server_name url.cyc.com;
root /opt/code;
if ($http_accept_language ~* "zh-Ch|zh") {
set $language /zh;
}
if ($http_accept_language ~* "en") {
set $language /en;
}
rewrite ^/$ /$language;
location / {
index index.html;
}
}
EOF
systemctl restart nginx
1.3、测试访问
~]# curl -L -H "accept-language: en" http://url.cyc.com/
en
~]# curl -L -H "accept-language: zh" http://url.cyc.com/
zh
2、用户通过手机设备访问url.cyc.com,跳转至url.cyc.com/m
2.1、代码准备
mkdir /opt/code/m
echo "url.cyc.com/m" >/opt/code/m/index.html
2.2、配置nginx
cat >/etc/nginx/conf.d/rewrite.cyc.com.conf<<'EOF'
server {
listen 80;
server_name url.cyc.com;
root /opt/code;
if ($http_user_agent ~* "android|iphone|ipad") {
rewrite ^/$ /m;
}
}
EOF
systemctl restart nginx
2.3、测试访问
~]# curl -L -H "User-Agent: android" http://url.cyc.com
url.cyc.com/m
3、用户通过手机设备访问url.cyc.com 跳转至m.cyc.com
3.1、代码准备
mkdir /opt/code/m
echo "m.cyc.com" >/opt/code/m/index.html
3.2、配置nginx
cat >/etc/nginx/conf.d/rewrite.cyc.com.conf<<'EOF'
server {
listen 80;
server_name url.cyc.com;
root /opt/code;
if ($http_user_agent ~* "android|iphone|ipad") {
rewrite ^/$ http://m.cyc.com;
}
}
server {
listen 80;
server_name m.cyc.com;
root /opt/code/m;
index index.html;
}
EOF
systemctl restart nginx
3.3、测试访问
# 配置hosts
192.168.10.4 m.cyc.com
192.168.10.4 url.cyc.com
~]# curl -L -H "User-Agent: android" http://url.cyc.com
m.cyc.com
4、用户通过http协议请求,能自动跳转至https协议
这里由于没有配置https,暂时写伪代码配置,熟悉语法即可
4.1、nginx配置【rewrite】
cat >/etc/nginx/conf.d/rewrite.cyc.com.conf<<'EOF'
server {
listen 80;
server_name url.cyc.com;
root /opt/code;
rewrite ^(.*)$ https://$server_name$1 redirect;
}
EOF
4.2、nginx配置【return】
cat >/etc/nginx/conf.d/rewrite.cyc.com.conf<<'EOF'
server {
listen 80;
server_name url.cyc.com;
root /opt/code;
return 302 https://$server_name$request_uri;
}
EOF
5、网站在维护过程中,希望用户访问所有网站重定向至一个维护页面
5.1、nginx配置
echo "正在维护中" >/opt/code/wh.html
cat >/etc/nginx/conf.d/rewrite.cyc.com.conf<<'EOF'
server {
listen 80;
server_name url.cyc.com;
root /opt/code;
rewrite ^(.*)$ /wh.html break;
location / {
index index.html;
}
}
EOF
systemctl restart nginx
5.2、测试访问
~]# curl -L url.cyc.com
正在维护中
6、当服务器遇到403 403 502等错误时,自动转到临时维护的静态页
6.1、nginx配置
echo "404 403 502,正在维护中" >/opt/code/wh.html
cat >/etc/nginx/conf.d/rewrite.cyc.com.conf<<'EOF'
server {
listen 80;
server_name url.cyc.com;
root /opt/code;
location / {
index index.html;
}
error_page 404 403 502 = @tempdown;
location @tempdown {
rewrite ^(.*)$ /wh.html break;
}
}
EOF
systemctl restart nginx
6.2、测试访问
]# curl -L url.cyc.com/asdfasdfasdf/asdfasdf
404 403 502,正在维护中
7、公司网站在停机维护时,指定的IP能够正常访问,其它的IP跳转到维护页
7.1、配置nginx
echo "404 403 502,正在维护中" >/opt/code/wh.html
cat >/etc/nginx/conf.d/rewrite.cyc.com.conf<<'EOF'
server {
listen 80;
server_name url.cyc.com;
root /opt/code;
set $ip 0;
if ($remote_addr = '192.168.10.8') {
set $ip 1;
return 200 '正常访问';
}
if ($ip = 0){
rewrite ^(.*)$ /wh.html break;
}
location /{
root /opt/code;
index index.html;
}
}
EOF
systemctl restart nginx
8、将phpMyAdmin合成一个URL
8.1、需求1-格式:phpadmin.cyc.com
cat >/etc/nginx/conf.d/phpadmin.cyc.com.conf<<'EOF'
upstream phpadmin {
server 192.168.10.5:8000;
server 192.168.10.7:8000;
}
server {
listen 80;
server_name phpadmin.cyc.com;
root /opt/code/m;
index index.html;
location / {
proxy_pass http://phpadmin;
}
}
EOF
systemctl restart nginx
8.2、需求2-格式:cyc.com/phpadmin
8.2.1、phpMyAdmin-nginx配置
cat >/etc/nginx/conf.d/phpadmin.cyc.com.conf<<'EOF'
upstream phpadmin {
server 192.168.10.5:8000;
server 192.168.10.7:8000;
}
server {
listen 80;
server_name cyc.com;
root /opt/code;
location ^~ /phpadmin {
proxy_pass http://phpadmin;
rewrite /phpadmin/(.*) /$1 break;
}
location / {
try_files $uri $uri/ /index.php;
root /opt/code;
index index.html index.php;
}
}
EOF
systemctl restart nginx
8.2.2、测试访问