当前位置: 首页 > news >正文

【Nginx】转发配置nginx.conf

文章目录

    • Nginx
    • Nginx主要作用
    • 转发配置
    • 相关问题
    • 参考
    • 推荐阅读

Nginx

Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,公开版本1.19.6发布于2020年12月15日
其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。2022年01月25日,nginx 1.21.6发布。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。

Nginx主要作用

  1. CI/DI
  2. 转发
  3. 负载均衡

本文主要内容:转发

转发配置

  1. tcp端口监听是唯一的,nginx要在哪个端口监听,是不能被占用的。配置一个server节点,就等于在server节点启动了一个tcp监听。
  2. nginx同一个端口可以监听多个不同host的请求。配置文件中可以重复写同一个端口的server节点。

#user  nobody;
worker_processes  1;#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;#pid        logs/nginx.pid;events {worker_connections  1024;
}stream {  server {listen  13389;  #本地请求端口proxy_pass x.x.x.x:3389;  #服务器远程桌面端口}server {listen  6672;  #本地请求端口proxy_pass  x.x.x.x:5672;  #rabbitmq}}http {include       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  logs/access.log  main;sendfile        on;#tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  65;#gzip  on;server {listen       8888;server_name  localhost;#charset koi8-r;#access_log  logs/host.access.log  main;#数采正式/测试接口  不走https了 不用配置跨域访问#location /RTP/DaqApi {#    #Proxy Settings#    add_header Access-Control-Allow-Origin $http_origin;#    add_header Access-Control-Allow-Headers *;#    add_header Access-Control-Allow-Methods *;#    proxy_redirect     off;#    proxy_http_version 1.1;#    proxy_set_header   Host             $host:$server_port;#    proxy_set_header   X-Real-IP        $remote_addr;#    proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;#    proxy_set_header   X-Forwarded-Proto $scheme; #    proxy_set_header   Upgrade $http_upgrade;#    proxy_set_header   Connection  "upgrade"; #    proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;#    proxy_max_temp_file_size 0;#    proxy_connect_timeout      90;#    proxy_send_timeout         90;#    proxy_read_timeout         90;          #    proxy_pass https://x.x.x.x:9433;#}location /RTPDaq/Api/{proxy_pass  http://x.x.x.x:9433/; proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}#error_page  404              /404.html;# redirect server error pages to the static page /50x.html#error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}# proxy the PHP scripts to Apache listening on 127.0.0.1:80##location ~ \.php$ {#    proxy_pass   http://127.0.0.1;#}# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000##location ~ \.php$ {#    root           html;#    fastcgi_pass   127.0.0.1:9000;#    fastcgi_index  index.php;#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;#    include        fastcgi_params;#}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one##location ~ /\.ht {#    deny  all;#}}# another virtual host using mix of IP-, name-, and port-based configuration##server {#    listen       8000;#    listen       somename:8080;#    server_name  somename  alias  another.alias;#    location / {#        root   html;#        index  index.html index.htm;#    }#}# HTTPS server##server {#    listen       443 ssl;#    server_name  localhost;#    ssl_certificate      cert.pem;#    ssl_certificate_key  cert.key;#    ssl_session_cache    shared:SSL:1m;#    ssl_session_timeout  5m;#    ssl_ciphers  HIGH:!aNULL:!MD5;#    ssl_prefer_server_ciphers  on;#    location / {#        root   html;#        index  index.html index.htm;#    }#}}

相关问题

在nginx中配置proxy_pass时,如果是按照^~匹配路径时,要注意proxy_pass后的url最后的/,当加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走;如果没有/,则会把匹配的路径部分也给代理走。

location ^~ /static_js/ 
{ 
proxy_cache js_cache; 
proxy_set_header Host js.test.com; 
proxy_pass http://js.test.com/; 
}

如上面的配置,如果请求的url是http://servername/static_js/test.html
会被代理成http://js.test.com/test.html

而如果这么配置

location ^~ /static_js/ 
{ 
proxy_cache js_cache; 
proxy_set_header Host js.test.com; 
proxy_pass http://js.test.com; 
}

则会被代理到http://js.test.com/static_js/test.htm

当然,我们可以用如下的rewrite来实现/的功能

location ^~ /static_js/ 
{ 
proxy_cache js_cache; 
proxy_set_header Host js.test.com; 
rewrite /static_js/(.+)
/
1 break; 
proxy_pass http://js.test.com; 
} 

参考

Nginx配置proxy_pass转发的/路径问题

推荐阅读

Nginx常用配置及代理转发

http://www.lryc.cn/news/233627.html

相关文章:

  • uniapp实现下载图片到本地
  • spring cloud-注册中心(Eureka)
  • 004 OpenCV akaze特征点检测匹配
  • openRPA开源项目源码编译
  • 飞书开发学习笔记(八)-开发飞书小程序Demo
  • Unity UI 完全解决方案
  • 为什么打开idea时,没有启动页面,如何解决?
  • golang - 嵌入静态文件打包
  • SQL题
  • GUN介绍
  • 《Effective C++》条款15
  • CTFd-Web题目动态flag
  • 系列九、对象的生命周期和GC
  • spark 窗口滑动用于在不同的数据块之间执行操作
  • 【数据结构】栈与队列的实现
  • HCL设备启动失败——已经解决
  • RabbitMQ的幂等性、优先级队列和惰性队列
  • Uniapp-小程序自定义导航栏
  • 云课五分钟-08安装Opera成功-仓库中查找对应版本
  • 设计师的好帮手!在线PS网页版工具让创意无限发挥!
  • Android Glide加载transform CenterCrop, CircleCrop ShapeableImageView圆形图并描边,Kotlin
  • 【docker启动的Jenkins时,遇到时区问题处理】
  • MySQL8.0学习笔记
  • 初始MySQL(七)(MySQL表类型和存储引擎,MySQL视图,MySQL用户管理)
  • Redis 配置文件信息中文翻译版
  • React项目首页中用canvas实现星空
  • flutter ios Exception : No Impeller Context is Available
  • [PHP]写个简单的分页静态接口用宝塔部署到Nginx
  • 表单提交是
  • Qt的委托代理机制