Nginx 配置细节解析
(1)反射
http {
upstream nacos{
ip_hash;
server 140.12.12.12:8848 max_fails=3 fail_timeout=10s;
server 140.12.12.13.115:8848 max_fails=3 fail_timeout=10s;
server 140.12.12.14:8848 max_fails=3 fail_timeout=10s;
}
server {
listen 848;
server_name 140.12.12.11;
location /{
proxy_pass http://nacos;
}
}
}
(2)本地存储
server {
listen 80;
server_name localhost;
location /publicspu {
add_header Access-Control-Allow-Origin *;
alias /opt/publicspu;
allow all;
autoindex on;
}
}
(3)转发
server {
listen 80;
server_name localhost;
location /prod-api/ {
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_pass http://127.0.0.1:8000/;
}
(4)配置443
server {
listen 443 ssl;
server_name localhost;
ssl_certificate /usr/local/nginx/ssl/w.w.com_bundle.pem;
ssl_certificate_key /usr/local/nginx/ssl/w.w.com.key;
ssl_session_cache shared:SSL:100m;
ssl_session_timeout 100m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
}
(5)配置访问文件
server {
listen 80;
server_name localhost;
location /WWC {
root /static/wx/;
index index.html index.htm UbPnjFOuC.txt;
}
}
(6)访问静态页
server {
listen 80;
server_name localhost;
location / {
root /static/user;
index index.html index.htm;
}
}
(7)配置 grpc
以nacos集群为例
stream{
upstream nacosgrpcc{
server 140.0.0.1:4848;
server 140.0.0.2:4848;
server 140.0.0.3:4848;
}
server {
listen 4848;
proxy_connect_timeout 300s;
proxy_timeout 300s;
proxy_pass nacosgrpcc;
}
upstream nacosgrpcb{
server 140.0.0.1:4849;
server 140.0.0.2:4849;
server 140.0.0.3:4849;
}
server {
listen 4849;
proxy_connect_timeout 300s;
proxy_timeout 300s;
proxy_pass nacosgrpcb;
}
}
http{
upstream nacos{
ip_hash;
server 140.0.0.1:3848 max_fails=3 fail_timeout=10s;
server 140.0.0.2:3848 max_fails=3 fail_timeout=10s;
server 140.0.0.3:3848 max_fails=3 fail_timeout=10s;
}
server {
listen 80;
server_name 140.0.0.4;
location /{
proxy_pass http://nacos;
}
}
}
(8)项目部署好后,访问正常,然后登录,刷新了一下后,发现404了,重新进入连接还是正常,刷新就会404
server {
listen 80;
server_name localhost;
location / {
root /static/user;
index index.html index.htm;
// 解决刷新404
try_files $uri $uri/ /index.html;
}
}
或者
server {
listen 80;
server_name localhost;
location / {
root /static/user;
index index.html index.htm;
if (!-e $request_filename) {
rewrite ^(.*)$ /index.html?s=$1 last;
break;
}
}
}
(9)获取用户真实IP
proxy_set_header Host
h
o
s
t
:
host:
host:server_port;
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
listen 443 ssl;
server_name dynet.top;
ssl_certificate /usr/local/nginx/ssl/ dynet.top_bundle.pem;
ssl_certificate_key /usr/local/nginx/ssl/ dynet.top.key;
ssl_session_cache shared:SSL:100m;
ssl_session_timeout 100m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location /{
proxy_pass http://172.0.0.3:9102/;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-Ip $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_buffering on;
proxy_buffer_size 4k;
proxy_buffers 8 1M;
proxy_busy_buffers_size 2M;
proxy_max_temp_file_size 0;
}