前期介绍
在一台主机上部署LAMP,之后使用Nginx实现反向代理,并且实现动静分离。
apache的访问端口为80,Nginx,访问端口为8001端口。
首先可以实现反向代理。
[root@lnmp-247 ~]# cat /usr/local/nginx/conf/nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" "$request_time"'
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
log_format json '{"@timestamp": "$time_local", '
'"remote_addr": "$remote_addr", '
'"referer": "$http_referer", '
'"request": "$request", '
'"request_time": "$request_time", '
'"status": $status, '
'"bytes": $body_bytes_sent, '
'"agent": "$http_user_agent", '
'"x_forwarded": "$http_x_forwarded_for", '
'"up_addr": "$upstream_addr",'
'"up_host": "$upstream_http_host",'
'"up_resp_time": "$upstream_response_time",'
'"request_time": "$request_time"'
' }';
access_log logs/xxx.log main;
#access_log logs/access-log.json json;
#access_log logs/access-log.json main;
sendfile on;
keepalive_timeout 65;
server {
listen 8001;
server_name localhost 192.168.80.247;
#拦截后台请求
location / {
proxy_pass http://localhost:80;
proxy_set_header X-Real-IP $remote_addr;
}
#拦截静态资源
location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|js|css)$ {
root static;
proxy_pass http://localhost:8001;
proxy_set_header X-Real-IP $remote_addr;
expires 30d;
}
# location / {
# proxy_pass http://192.168.80.247;
# proxy_set_header Host $proxy_host;
# proxy_set_header X-Real-IP $remote_addr;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# }
# location /index/ {
# root html;
# index index.html screenshot.png;
# }
# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# root html;
# }
# location ~ \.php$ {
# proxy_pass http://127.0.0.1:80;
# }
}
}
使用本机的8001端口可以访问后端的apache部署的wordpress
配置动静分离的时候出现问题
我在/usr/local/nginx/static/img目录下放了照片。
[root@lnmp-247 img]# pwd
/usr/local/nginx/static/img
[root@lnmp-247 img]# ll
总用量 9796
-rw-r--r-- 1 root root 10030790 4月 1 09:47 001.jpg
但是访问本机的的8001端口(nginx的端口),并且配置路径显示504
将之前的日志文件备份之后,再次使用tail -f 查看访问日志,在浏览器访问了一次,结果,显示
127.0.0.1 - - [01/Apr/2023:18:55:37 +0800] "GET /img/001.jpg HTTP/1.0" "0.000"502 559 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0" "-"
192.168.80.169 - - [01/Apr/2023:18:55:37 +0800] "GET /img/001.jpg HTTP/1.1" "0.000"502 559 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0" "-"
据此推测有可能成环
再次查看配置的文件
#拦截静态资源
location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|js|css)$ {
root static;
proxy_pass http://localhost:8001;
proxy_set_header X-Real-IP $remote_addr;
expires 30d;
}
相当于nginx的8001端口,接收到访问请求之后,再次转向了本机的8001端口,导致请求成环,8001端口不断的转向8001端口,导致请求成环。,并且之访问一次之后出现大量的访问日志,
所以尝试将配置文件修改为
#拦截静态资源
location ~ .*\.(html|htm|gif|jpg|jpeg|bmp|png|ico|js|css)$ {
root static;
#proxy_pass http://localhost:8001;
#proxy_set_header X-Real-IP $remote_addr;
expires 30d;
}
之后重启nginx服务,再次访问服务器
显示访问成功。