只有10.100.10.100才能访问网站,其他ip访问是本地静态页面
server { listen 80; server_name xxxx; client_max_body_size 1024m; return 301 https://$server_name$request_uri; error_page 520 /index.html; location / { if ($http_x_forwarded_for != "10.100.10.100") { return 520; } proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; add_header X-Route-Ip $upstream_addr; add_header X-Route-Status $upstream_status; proxy_connect_timeout 300s; proxy_send_timeout 300s; proxy_read_timeout 300s; proxy_pass http://gxpt; } location = /index.html { root /usr/local/nginx/html/dist; } }
配置文件示例:
### 全局配置(Main模块) user nginx; # 指定运行worker进程的用户和组 worker_processes auto; # worker进程的个数,auto表示自动检测CPU核心数 error_log /var/log/nginx/error.log warn; # 错误日志存放路径及日志级别 pid /var/run/nginx.pid; # nginx的pid文件存放路径 worker_rlimit_nofile 65535; # 一个worker进程所能够打开的最大文件句柄数 ### 事件处理(Events模块) events { worker_connections 1024; # 每个worker进程支持的最大连接数 use epoll; # 使用epoll事件驱动模型,Linux推荐 multi_accept on; # 是否允许一次性地响应多个用户请求 } ### HTTP服务配置(Http模块) http { include /etc/nginx/mime.types; # 引入MIME类型文件 default_type application/octet-stream; # 默认MIME类型 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; # 是否使用sendfile传输文件 tcp_nopush on; # 启用TCP_NOPUSH或TCP_CORK选项 keepalive_timeout 65; # 长连接超时时间 # 虚拟主机配置 server { listen 80; # 监听端口 server_name localhost; # 服务名称 location / { root /usr/share/nginx/html; # 资源存放的根目录 index index.html index.htm; # 默认访问页面 } # 错误页面配置 error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # 反向代理配置示例 location /app { proxy_pass http://127.0.0.1:8080; # 转发请求到后端服务器 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } # 负载均衡配置示例 upstream myapp1 { server backend1.example.com weight=5; server backend2.example.com; } server { listen 80; server_name myapp.example.com; location / { proxy_pass http://myapp1; # 使用上面定义的upstream } } } }
注
配置文件结构:Nginx的配置文件(nginx.conf)通常包含全局块、events块、http块等,其中http块可以包含多个server块,每个server块又可以包含多个location块。
日志和错误处理:合理配置日志和错误处理对于监控和调试Nginx服务至关重要。
性能优化:通过调整worker_processes、worker_connections等参数,可以优化Nginx的性能。
安全性:合理配置SSL/TLS、限制请求速率、设置访问控制等,可以提高Nginx服务的安全性。
Nginx在配置文件中使用location指令来定义请求的匹配规则,其中正则匹配主要通过在location指令后添加特定的修饰符(如~、~*、^~等)来实现。
精确匹配:使用=修饰符,表示请求的URI必须与指定的字符串完全相等才能匹配。
普通字符串前缀匹配:如果请求URI以指定的字符串为开头,则使用该location模块处理请求。如果没有修饰符,则默认为普通字符串前缀匹配。
正则表达式匹配
当多个location块同时匹配请求URI时,Nginx按照以下规则选择location块处理请求:
location = / { # 处理对根目录的请求 }
这个配置只会匹配对根目录(即/)的请求。
location /images/ { # 处理所有以/images/开头的请求 }
这个配置会匹配所有以/images/开头的请求,但会继续向下搜索更具体的匹配规则。
location ~ \.(gif|jpg|jpeg)$ { # 处理所有以gif、jpg或jpeg结尾的请求 }
这个配置使用正则表达式匹配所有以.gif、.jpg或.jpeg结尾的请求,且不区分大小写(但这里使用的是~,实际上应使用~*来明确表示不区分大小写)。
location ^~ /images/ { # 匹配所有以/images/开头的请求,并停止搜索正则 }
这个配置会匹配所有以/images/开头的请求,并且一旦匹配成功,就不会再进行正则表达式的匹配。