nginx如何实现数据库端口转发

数据库   发布日期:2023年08月09日   浏览次数:632

这篇文章主要讲解了“nginx如何实现数据库端口转发”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“nginx如何实现数据库端口转发”吧!

出于数据安全性考虑,正常情况下,网站或者项目的数据库一般都是禁止外网访问,或者只允许部分主机访问。那么,如何才能不修改这类权限的前提下,让其他被禁止访问的主机也能访问这个数据库呢。这时,Nginx的作用就体现出来了。

1、mysql为例

oracle、sqlserver等数据库配置和下面配置一样,只是数据库的端口不一样而已
需要注意的是这个配置要写在http外边

  1. #使用nginx做数据库端口转发
  2. stream {
  3. upstream sql {
  4. # 配置数据库的ip和端口
  5. server 172.16.8.190:3306 weight=1 max_fails=2 fail_timeout=30s;
  6. }
  7. server {
  8. # 配置本机暴露端口
  9. listen 925;
  10. proxy_connect_timeout 1s;
  11. proxy_timeout 3s;
  12. proxy_pass sql;
  13. }
  14. }

2、完整配置如下

  1. #user nobody;#配置用户或者用户组,默认为nobody
  2. worker_processes 2;#允许生成的进程数,默认为1
  3. #制定日志路径,级别。这个设置可以放入全局块,http块,server块,
  4. #级别以此为:debug|info|notice|warn|error|crit|alert|emerg
  5. #error_log logs/error.log;
  6. #error_log logs/error.log notice;
  7. #error_log logs/error.log info;
  8. #pid logs/nginx.pid;#指定nginx进程运行文件存放地址
  9. events {
  10. worker_connections 1024; #最大连接数,默认为512
  11. accept_mutex on; #设置网路连接序列化,防止惊群现象发生,默认为on
  12. multi_accept on; #设置一个进程是否同时接受多个网络连接,默认为off
  13. #use epoll; #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
  14. }
  15. stream {
  16. upstream sql {
  17. server 172.16.8.190:3306 weight=1 max_fails=2 fail_timeout=30s;
  18. }
  19. server {
  20. listen 925;
  21. proxy_connect_timeout 1s;
  22. proxy_timeout 3s;
  23. proxy_pass sql;
  24. }
  25. }
  26. http {
  27. include mime.types;
  28. default_type application/octet-stream;
  29. #log_format main '$remote_addr - $remote_user [$time_local] "$request" '
  30. # '$status $body_bytes_sent "$http_referer" '
  31. # '"$http_user_agent" "$http_x_forwarded_for"';
  32. #access_log logs/access.log main;
  33. sendfile on;
  34. #tcp_nopush on;
  35. #keepalive_timeout 0;
  36. keepalive_timeout 65;
  37. #gzip on;
  38. #配置tomcat的IP地址和访问端口
  39. upstream tomcat {
  40. server 172.16.8.190:8080;
  41. }
  42. server {
  43. listen 9008;
  44. server_name 172.16.8.190;
  45. #header name含下划线
  46. underscores_in_headers on;
  47. #charset gbk; # 编码设置
  48. #开启gzip压缩
  49. #gzip模块设置
  50. gzip on; #开启gzip压缩输出
  51. gzip_min_length 1k; #最小压缩文件大小
  52. gzip_buffers 4 16k; #压缩缓冲区
  53. gzip_http_version 1.0; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
  54. gzip_comp_level 2; #压缩等级
  55. gzip_types text/plain application/x-javascript text/css application/xml;
  56. #压缩类型,默认就已经包含text/html,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn。
  57. gzip_vary on;
  58. #charset koi8-r;
  59. #charset utf-8,gbk; # 避免中文乱码
  60. #root D:/htmlPage/dist;
  61. #access_log logs/host.access.log main;
  62. location /{
  63. #这个地方指定被访问的文件夹位置
  64. root D:/htmlPage;
  65. index index.html index.htm;
  66. #limit_rate 1280k; #限制速度
  67. client_max_body_size 100M;
  68. allow all;
  69. autoindex on;
  70. proxy_set_header X-Real-IP $remote_addr;
  71. proxy_set_header Host $host;
  72. proxy_set_header X-Real-IP $remote_addr;
  73. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  74. add_header 'Access-Control-Allow-Headers' 'Content-Type';
  75. add_header 'Access-Control-Allow-Methods' 'GET';
  76. add_header 'Access-Control-Allow-Methods' 'POST';
  77. add_header 'Access-Control-Allow-Credentials' 'true';
  78. add_header 'Access-Control-Allow-Origin' '*';
  79. proxy_connect_timeout 600s;
  80. proxy_read_timeout 600s;
  81. proxy_send_timeout 600s;
  82. access_log off;
  83. break;
  84. }
  85. }
  86. }

以上就是nginx如何实现数据库端口转发的详细内容,更多关于nginx如何实现数据库端口转发的资料请关注九品源码其它相关文章!