Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

WIP Build: Make the JavaScript middleware work on Nginx as well#5652

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Draft
mgol wants to merge1 commit intojquery:main
base:main
Choose a base branch
Loading
frommgol:nginx-js-middleware

Conversation

mgol
Copy link
Member

@mgolmgol commentedApr 7, 2025
edited
Loading

Summary

Extract handlers independent frommiddleware-mockserver.cjs into a separatemiddleware-handlers.js file; add a separate wrapper for working with the nginx JavaScript engine.

I wanted to get some opinions on whether this makes sense. nginx can be used with njs or QuickJS; I used the latter as njs is very limited (it doesn't even support named imports). JS feature support is pretty good but most Node.js modules are missing. On the other hand, handlers returning the status code, headers & body don't need a lot beyond the ability to read files (which works) & read the full body (available out of the box). I'm also readingimport.meta.dirname which is not supported either so I'm just passing the dirname from nginx.

Right now the nginx version only fails the multipart form data test, I haven't migrated that part. The rest passes.

A caveat: the nginx version available on macOS via Homebrew doesn't include the js module and it's impossible to add one. There's a separate tap for full nginx butit's broken at the moment.

I tried using the Dockernginx:alpine image and it worked without major issues, though. I could even use the config I currently use on macOS with only minor changes to enable the JS engine. The command to set this up:

docker run -d \  --name nginx-njs \  -p 80:80 \  -v /Users/mgol/projects/public/jquery/jquery-core:/Users/mgol/projects/public/jquery/jquery-core \  -v /Users/mgol/www/vhosts:/Users/mgol/www/vhosts \  -v /opt/homebrew/etc/nginx:/opt/homebrew/etc/nginx:ro \  -v /opt/homebrew/var/log/nginx:/opt/homebrew/var/log/nginx \  nginx:alpine

Then I just had to drop the/etc/nginx folder and create a symlink to/opt/homebrew/etc/nginx in its place and add some config to the js module. It shouldn't be hard to create a Dockerfile for this if we wanted to make it easier for others as well.

If we were to land this, I'd prefer to do this in multiple PRs to not lose history onmiddleware-mockserver.cjs.

Checklist

@mgolmgol added Build Discuss in MeetingReserved for Issues and PRs that anyone would like to discuss in the weekly meeting. labelsApr 7, 2025
@mgolmgol self-assigned thisApr 7, 2025
@timmywil
Copy link
Member

We discussed this and I believe we're going to look into more options using docker.

mgol reacted with thumbs up emoji

@timmywiltimmywil removed the Discuss in MeetingReserved for Issues and PRs that anyone would like to discuss in the weekly meeting. labelApr 28, 2025
Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment
Reviewers
No reviews
Assignees

@mgolmgol

Labels
Milestone
No milestone
Development

Successfully merging this pull request may close these issues.

2 participants
@mgol@timmywil

[8]ページ先頭

©2009-2025 Movatter.jp