{"id":25412890,"url":"https://github.com/flomesh-io/fgw","last_synced_at":"2025-10-31T07:31:01.804Z","repository":{"id":173227829,"uuid":"650404281","full_name":"flomesh-io/fgw","owner":"flomesh-io","description":"A Gateway API(https://gateway-api.sigs.k8s.io) implementation, build on top of pipy.","archived":false,"fork":false,"pushed_at":"2024-12-30T04:16:08.000Z","size":4898,"stargazers_count":11,"open_issues_count":2,"forks_count":7,"subscribers_count":6,"default_branch":"new-pjs","last_synced_at":"2024-12-30T05:21:43.876Z","etag":null,"topics":["gateway-api"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/flomesh-io.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-06-07T02:14:38.000Z","updated_at":"2024-12-22T10:34:51.000Z","dependencies_parsed_at":"2024-01-30T09:45:45.359Z","dependency_job_id":"8a4cffaf-ccce-4c81-baf4-72e35d8472cb","html_url":"https://github.com/flomesh-io/fgw","commit_stats":null,"previous_names":["flomesh-io/fgw"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flomesh-io%2Ffgw","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flomesh-io%2Ffgw/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flomesh-io%2Ffgw/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/flomesh-io%2Ffgw/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/flomesh-io","download_url":"https://codeload.github.com/flomesh-io/fgw/tar.gz/refs/heads/new-pjs","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239134496,"owners_count":19587473,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gateway-api"],"created_at":"2025-02-16T13:37:57.597Z","updated_at":"2025-10-31T07:30:56.080Z","avatar_url":"https://github.com/flomesh-io.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Flomesh Gateway\n\nThe Flomesh Gateway (FGW) stands as a high-performance, feature-rich solution for microservice gateways and reverse proxies. Grounded on the robust [Pipy](https://github.com/flomesh-io/pipy) technology, the FGW offers a proficient and adaptable approach, enabling users to fine-tune and govern their intricate network environments with finesse.\n\n## Capabilities of the FGW\n\nServing as a comprehensive network solution, the FGW furnishes potent support in addressing a myriad of network demands and challenges. It can adeptly replace microservice gateways like Netflix Zuul and Spring Cloud Gateway, and execute functions as a reverse proxy, static web service, and a layer 7 load balancer. Simultaneously, it extends advanced functionalities encompassing API management, authentication, and authorization.\n\nThe FGW unveils a gamut of core functionalities that span beyond mere TLS processing, routing, load balancing, traffic control, redirection, and URL rewriting. It embarks upon sophisticated features such as traffic mirroring, tunneling, authentication authorization, and cross-domain integrations, facilitating an exemplary performance in managing diverse network scenarios and security requisites.\n\nThe FGW further offers plugin capabilities, permitting extensions and customizations of its functionalities through [Pipy JS](https://flomesh.io/pipy/docs/en/reference/pjs). This level of flexibility enables the FGW to accommodate a diverse array of specific and unique business requirements.\n\nMoreover, the FGW boasts not only formidable features but also extensive compatibility. It supports a variety of computing architectures, encompassing X86, ARM64, Hygon, Loongson, and RISC-V, amongst others, and operates seamlessly across a spectrum of operating systems, including various Linux distributions, FreeBSD, macOS, and domestically produced operating systems.\n\n## Quickstart\n\nFGW has a sample inside. Let's clone the repo first.\n\nNavigate to the project's root directory and execute `pipy`, specifying the entry file `./pjs/main.js`.\n\n```shell\ncd fgw\npipy ./pjs/main.js\n```\n\nUpon initiating with the default configuration present in the project (`./pjs/config.json`), it will monitor three ports:\n\n  * `8080`: A proxy port orchestrating requests to balance the load amongst the two other static services.\n  * `8081`: A static service inaugurated from the `/var/www/html` directory.\n  * `8082`: A static service launched from the `static/www2` directory.\n\n\u003e It is important to note that the local `/var/www/html` directory is non-existent, thus attempts to access the service at `8081` will yield a `404` error.\n\n```shell\ncurl -I localhost:8081\nHTTP/1.1 404 Not Found\ncontent-length: 0\nconnection: keep-alive\n\ncurl -I localhost:8082\nHTTP/1.1 200 OK\ncontent-type: text/html\ncontent-length: 72\nconnection: keep-alive\n```\n\nWhen accessing the proxy through port `8080`, a `200` response is received irrespective of both the upstream static services bearing a `50` weightage.\n\n```shell\ncurl -I localhost:8080\nHTTP/1.1 200 OK\ncontent-type: text/html\ncontent-length: 72\nset-cookie: _srv_id=3021372512864600; path=/; expires=Fri, 4 Aug 2023 02:23:59 GMT; max-age=3600\nconnection: keep-alive\n```\n\nThis behavior is attributable to the configured [health check](https://fgw-docs.flomesh.io/features/healthcheck/) mechanism. The FGW actively conducts health assessments on the upstreams, considering only those with a `200` response status code as healthy, while expunging others from the load balance list.\n\n## Documentation\n\nYou can explore the various functionalities of FGW at the [FGW Documentation](https://fgw-docs.flomesh.io). Currently, it is available exclusively in Chinese and is undergoing continuous enhancements, hence you might encounter some blank pages.\n\nAll FGW documentation is maintained within the [fgw-docs](https://github.com/flomesh-io/fgw-docs) repository and is crafted using the [Markdown](https://www.markdownguide.org/basic-syntax/) format.\n\n* [Overview](https://fgw-docs.flomesh.io/overview/)\n* [Quick Experience](https://fgw-docs.flomesh.io/quickstart/)\n* [Getting Started](https://fgw-docs.flomesh.io/getting_started/)\n  * [Installation](https://fgw-docs.flomesh.io/getting_started/install/)\n* [Features](https://fgw-docs.flomesh.io/features/)\n  * [TCP Load Balancing](https://fgw-docs.flomesh.io/features/tcp-load-balancer/)\n  * [HTTP/HTTPS Load Balancing](https://fgw-docs.flomesh.io/features/http-load-balancer/)\n  * [TLS](https://fgw-docs.flomesh.io/features/tls/)\n  * [Policies](https://fgw-docs.flomesh.io/features/policies/)\n  * [Static Web Service](https://fgw-docs.flomesh.io/features/static-server/)\n  * [Observability](https://fgw-docs.flomesh.io/features/observability/)\n* [Reference](https://fgw-docs.flomesh.io/reference/)\n  * [Configuration](https://fgw-docs.flomesh.io/reference/configuration/)\n  * [Plugins](https://fgw-docs.flomesh.io/reference/plugin/)\n* [Releases](https://fgw-docs.flomesh.io/releases/)\n\n## Developer Guide\n\n### Prerequisites\n\n- Pipy\n- FGW Repo\n- Tools for testing: netstat, cat, grep, openssl, curl, shpec\n\n### Quick Start\n\nAll PipyJS scripts are housed in the `pjs` directory. Once FGW is initiated, it will operate in the [Pipy Repo Mode](https://flomesh.io/pipy/docs/en/operating/repo/0-intro) and subsequently publish all the PipyJS scripts into the Repo.\n\nBefore commencing, ensure that Pipy is installed. Refer to the [installation documentation](https://flomesh.io/pipy/docs/en/getting-started/build-install) for guidance.\n\n### Build\n\nExecute `make build` to compile FGW. Upon successful compilation, the fgw binary file can be located in the `bin` directory.\n\n### Testing\n\nWithin the tests/shpec directory, initially run pre_test.sh to examine the testing environment, and thereafter execute shpec to test all cases.\n\n\u003e The testing works on LINUX ONLY!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflomesh-io%2Ffgw","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fflomesh-io%2Ffgw","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fflomesh-io%2Ffgw/lists"}