Oracle:使用nginx做为代理访问

nginx 必须启用 启用 --with-stream 模块。

可下载源码编译。

nginx.conf的配置:

worker_processes  1;

events {
    worker_connections  1024;
}

stream {
    server{
        listen 1521 so_keepalive=on;
        proxy_pass 10.1.101.3:1521;
        proxy_timeout 72h;
    }
}
~

 

更一般的写法:

worker_processes  1;

events {
    worker_connections  1024;
}

stream {
upstream oracle{ server
10.1.101.3:1521; }
server {
listen 1521; proxy_pass oracle; } }

 

 

附录:官方改模块说明文档

Module ngx_stream_core_module

Example Configuration
Directives
     listen
     preread_buffer_size
     preread_timeout
     proxy_protocol_timeout
     resolver
     resolver_timeout
     server
     stream
     tcp_nodelay
     variables_hash_bucket_size
     variables_hash_max_size
Embedded Variables

The ngx_stream_core_module module is available since version 1.9.0. This module is not built by default, it should be enabled with the --with-stream configuration parameter.

Example Configuration

 

worker_processes auto;

error_log /var/log/nginx/error.log info;

events {
    worker_connections  1024;
}

stream {
    upstream backend {
        hash $remote_addr consistent;

        server backend1.example.com:12345 weight=5;
        server 127.0.0.1:12345            max_fails=3 fail_timeout=30s;
        server unix:/tmp/backend3;
    }

    upstream dns {
       server 192.168.0.1:53535;
       server dns.example.com:53;
    }

    server {
        listen 12345;
        proxy_connect_timeout 1s;
        proxy_timeout 3s;
        proxy_pass backend;
    }

    server {
        listen 127.0.0.1:53 udp reuseport;
        proxy_timeout 20s;
        proxy_pass dns;
    }

    server {
        listen [::1]:12345;
        proxy_pass unix:/tmp/stream.socket;
    }
}

 

Directives
Syntax:listen address:port [ssl] [udp] [proxy_protocol] [backlog=number] [rcvbuf=size] [sndbuf=size] [bind] [ipv6only=on|off] [reuseport] [so_keepalive=on|off|[keepidle]:[keepintvl]:[keepcnt]];
Default:
Context:server

Sets the address and port for the socket on which the server will accept connections. It is possible to specify just the port. The address can also be a hostname, for example:

listen 127.0.0.1:12345;
listen *:12345;
listen 12345;     # same as *:12345
listen localhost:12345;

IPv6 addresses are specified in square brackets:

listen [::1]:12345;
listen [::]:12345;

UNIX-domain sockets are specified with the “unix:” prefix:

listen unix:/var/run/nginx.sock;

 

The ssl parameter allows specifying that all connections accepted on this port should work in SSL mode.

The udp parameter configures a listening socket for working with datagrams (1.9.13).

The proxy_protocol parameter (1.11.4) allows specifying that all connections accepted on this port should use the PROXY protocol.

The PROXY protocol version 2 is supported since version 1.13.11.

 

The listen directive can have several additional parameters specific to socket-related system calls.

backlog= number
sets the  backlog parameter in the  listen() call that limits the maximum length for the queue of pending connections (1.9.2). By default,  backlog is set to -1 on FreeBSD, DragonFly BSD, and macOS, and to 511 on other platforms.
rcvbuf= size
sets the receive buffer size (the  SO_RCVBUF option) for the listening socket (1.11.13).
sndbuf= size
sets the send buffer size (the  SO_SNDBUF option) for the listening socket (1.11.13).
bind
this parameter instructs to make a separate  bind() call for a given address:port pair. The fact is that if there are several  listen directives with the same port but different addresses, and one of the  listendirectives listens on all addresses for the given port ( *: port), nginx will  bind() only to  *: port. It should be noted that the  getsockname() system call will be made in this case to determine the address that accepted the connection. If the  ipv6only or  so_keepalive parameters are used then for a given address: port pair a separate  bind() call will always be made.
ipv6only= on| off
this parameter determines (via the  IPV6_V6ONLY socket option) whether an IPv6 socket listening on a wildcard address  [::] will accept only IPv6 connections or both IPv6 and IPv4 connections. This parameter is turned on by default. It can only be set once on start.
reuseport
this parameter (1.9.1) instructs to create an individual listening socket for each worker process (using the  SO_REUSEPORT socket option on Linux 3.9+ and DragonFly BSD, or  SO_REUSEPORT_LB on FreeBSD 12+), allowing a kernel to distribute incoming connections between worker processes. This currently works only on Linux 3.9+, DragonFly BSD, and FreeBSD 12+ (1.15.1).
Inappropriate use of this option may have its security  implications.
so_keepalive= on| off|[ keepidle]:[ keepintvl]:[ keepcnt]
this parameter configures the “TCP keepalive” behavior for the listening socket. If this parameter is omitted then the operating system’s settings will be in effect for the socket. If it is set to the value “ on”, the  SO_KEEPALIVE option is turned on for the socket. If it is set to the value “ off”, the  SO_KEEPALIVE option is turned off for the socket. Some operating systems support setting of TCP keepalive parameters on a per-socket basis using the  TCP_KEEPIDLETCP_KEEPINTVL, and  TCP_KEEPCNT socket options. On such systems (currently, Linux 2.4+, NetBSD 5+, and FreeBSD 9.0-STABLE), they can be configured using the  keepidlekeepintvl, and  keepcnt parameters. One or two parameters may be omitted, in which case the system default setting for the corresponding socket option will be in effect. For example,
so_keepalive=30m::10
will set the idle timeout ( TCP_KEEPIDLE) to 30 minutes, leave the probe interval ( TCP_KEEPINTVL) at its system default, and set the probes count ( TCP_KEEPCNT) to 10 probes.

 

Different servers must listen on different address:port pairs.

Syntax:preread_buffer_size size;
Default:
preread_buffer_size 16k;
Context:streamserver

This directive appeared in version 1.11.5.

Specifies a size of the preread buffer.

Syntax:preread_timeout timeout;
Default:
preread_timeout 30s;
Context:streamserver

This directive appeared in version 1.11.5.

Specifies a timeout of the preread phase.

Syntax:proxy_protocol_timeout timeout;
Default:
proxy_protocol_timeout 30s;
Context:streamserver

This directive appeared in version 1.11.4.

Specifies a timeout for reading the PROXY protocol header to complete. If no entire header is transmitted within this time, the connection is closed.

Syntax:resolver address ... [valid=time] [ipv6=on|off];
Default:
Context:streamserver

This directive appeared in version 1.11.3.

Configures name servers used to resolve names of upstream servers into addresses, for example:

resolver 127.0.0.1 [::1]:5353;

An address can be specified as a domain name or IP address, and an optional port. If port is not specified, the port 53 is used. Name servers are queried in a round-robin fashion.

By default, nginx will look up both IPv4 and IPv6 addresses while resolving. If looking up of IPv6 addresses is not desired, the ipv6=off parameter can be specified.

By default, nginx caches answers using the TTL value of a response. The optional valid parameter allows overriding it:

resolver 127.0.0.1 [::1]:5353 valid=30s;

 

Before version 1.11.3, this directive was available as part of our  commercial subscription.

 

Syntax:resolver_timeout time;
Default:
resolver_timeout 30s;
Context:streamserver

This directive appeared in version 1.11.3.

Sets a timeout for name resolution, for example:

resolver_timeout 5s;

 

Before version 1.11.3, this directive was available as part of our  commercial subscription.

 

Syntax:server { ... }
Default:
Context:stream

Sets the configuration for a server.

Syntax:stream { ... }
Default:
Context:main

Provides the configuration file context in which the stream server directives are specified.

Syntax:tcp_nodelay on | off;
Default:
tcp_nodelay on;
Context:streamserver

This directive appeared in version 1.9.4.

Enables or disables the use of the TCP_NODELAY option. The option is enabled for both client and proxied server connections.

Syntax:variables_hash_bucket_size size;
Default:
variables_hash_bucket_size 64;
Context:stream

This directive appeared in version 1.11.2.

Sets the bucket size for the variables hash table. The details of setting up hash tables are provided in a separate document.

Syntax:variables_hash_max_size size;
Default:
variables_hash_max_size 1024;
Context:stream

This directive appeared in version 1.11.2.

Sets the maximum size of the variables hash table. The details of setting up hash tables are provided in a separate document.

Embedded Variables

The ngx_stream_core_module module supports variables since 1.11.2.

$binary_remote_addr
client address in a binary form, value’s length is always 4 bytes for IPv4 addresses or 16 bytes for IPv6 addresses
$bytes_received
number of bytes received from a client (1.11.4)
$bytes_sent
number of bytes sent to a client
$connection
connection serial number
$hostname
host name
$msec
current time in seconds with the milliseconds resolution
$nginx_version
nginx version
$pid
PID of the worker process
$protocol
protocol used to communicate with the client:  TCP or  UDP (1.11.4)
$proxy_protocol_addr
client address from the PROXY protocol header, or an empty string otherwise (1.11.4)

The PROXY protocol must be previously enabled by setting the proxy_protocol parameter in the listen directive.

$proxy_protocol_port
client port from the PROXY protocol header, or an empty string otherwise (1.11.4)

The PROXY protocol must be previously enabled by setting the proxy_protocol parameter in the listen directive.

$remote_addr
client address
$remote_port
client port
$server_addr
an address of the server which accepted a connection

Computing a value of this variable usually requires one system call. To avoid a system call, the listen directives must specify addresses and use the bind parameter.

$server_port
port of the server which accepted a connection
$session_time
session duration in seconds with a milliseconds resolution (1.11.4);
$status
session status (1.11.4), can be one of the following:
200
session completed successfully
400
client data could not be parsed, for example, the  PROXY protocol header
403
access forbidden, for example, when access is limited for  certain client addresses
500
internal server error
502
bad gateway, for example, if an upstream server could not be selected or reached.
503
service unavailable, for example, when access is limited by the  number of connections
$time_iso8601
local time in the ISO 8601 standard format
$time_local
local time in the Common Log Format

 

 

 

测试可行

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WebLogic和Nginx是两种常用的网络服务器软件。 WebLogic是由Oracle开发的Java应用服务器,用于部署和管理企业级Java应用程序。它提供了一个强大的、可靠的平台,用于开发、测试和部署Java EE(Java Enterprise Edition)应用程序。WebLogic支持广泛的Java EE技术和规范,包括EJB(Enterprise JavaBeans)、JSP(JavaServer Pages)、Servlets、JMS(Java Message Service)和JDBC(Java Database Connectivity)等。它还提供了可靠性、弹性和可伸缩性,以满足大型企业环境中的高负载和高可用性需求。 Nginx是一个开源的高性能Web服务器和反向代理服务器。它主要用于提供静态资源的高速访问和反向代理,同时也支持负载均衡、SSL/TLS终止、HTTP缓存、HTTP视频流和分布式缓存等功能。Nginx通常用作Web服务器的前端,将客户端请求转发给后端的应用服务器。它具有轻量级、高并发处理能力和低内存消耗的特点,适用于高流量和高负载环境。 在一些大型企业的架构中,WebLogic和Nginx可以同时部署在一个系统中,互相配合使用Nginx作为Web服务器的前端,负责处理静态资源的请求和负载均衡的功能,将动态请求转发给后端的WebLogic服务器进行处理。这样可以充分利用Nginx的高性能和轻量级特点,并通过WebLogic的强大功能和企业级支持来处理Java应用程序的请求。 总结起来,WebLogic和Nginx是两种在不同领域中都非常有用的网络服务器软件。WebLogic适用于部署和管理Java企业级应用程序,而Nginx则适用于处理高性能和负载均衡的静态资源和动态请求。将它们结合使用可以提高系统的性能和可伸缩性,满足不同场景下的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值